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



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 + '\n')
id = id + 1

if __name__ == '__main__':
for x in range(20, 21):
print('当前页面: '+ str(x))
get_title(base_url+str(x))


效果:

记第一个爬虫_html

遇到的问题

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. 写入到文件中没有换行

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

 

 

参考链接:

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

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


个性签名:时间会解决一切