• 记第一个爬虫


    这个程序用来爬取我在博客园所有文章的标题,并用文件存起来。

    from requests_html import HTMLSession
    
    base_url = 'https://www.cnblogs.com/lfri/default.html?page='
    id = 1
    
    def get_title(url):
        global id #在函数内部修改全局变量的值,要先用global声明全局变量。
        session = HTMLSession()
        r = session.get(url)
        r.html.render(scrolldown=3, sleep=0.01)  #下拉3次
        titles = r.html.find('a.postTitle2')
        print(len(titles))
        with open('titles.txt', 'a', encoding="utf-8") as f:  #使用utf-8编码
            for i, title in enumerate(titles):
                s = f'{id} [{title.text}]({title.attrs["href"]})'
                print(s)
                f.write(s + '
    ')
                id = id + 1
    
    if __name__ == '__main__':
        for x in range(20, 21):
            print('当前页面: '+ str(x))
            get_title(base_url+str(x))

    效果:

    遇到的问题

    1. UnicodeEncodeError: 'gbk' codec can't encode character 'xf6' in position 30: illegal multibyte sequence

    解决方法:原因在于出现了gbk无法编码的字符,我有篇博客出现了“Möbius”。改成utf-8编码即可,一种方法是将encoding="utf-8"参数加到file.open()中。

    2. 写入到文件中没有换行

    解决方法:在字符串末尾加上 ' ' 。

    参考链接:

    1. f.write()写入中文出错解决办法

    2. Python中将变量按行写入txt文本中

  • 相关阅读:
    bzoj 1367
    codeforces 757F
    bzoj 3600
    比赛环境设置
    线段树合并
    BZOJ2105: 增强型LCP
    BZOJ3156: 防御准备
    BZOJ3252: 攻略
    BZOJ2464: 中山市选[2009]小明的游戏
    Beta Round #9 (酱油杯noi考后欢乐赛)乌鸦喝水
  • 原文地址:https://www.cnblogs.com/lfri/p/12198782.html
Copyright © 2020-2023  润新知