最近有小伙伴说看完蜜蜂之前的文章‘python代码实现输入关键字下载图片’(https://blog.51cto.com/u_15937426/8649516)把自己平时比较喜欢的图片保存到本地,复制蜜蜂的代码确实可以下载百度图片,但是自己修改代码里面的网址之后想下载一下lol贴吧的前10页的数据并不能保存;对于这个功能的实现的话,其实还是比较简单的。接下来蜜蜂就在代码中用正则实现这一需求,蜜蜂这里是把内容保存到csv文件里了。
import re
import requests
from lxml import etree
# 爬取lol贴吧前10页的数据,
# <1>要求帖子标题, 帖子内容(外层页面的内容即可)
# <2>保存到csv文件
# <3>url: https://tieba.baidu.com/f?kw=lol&ie=utf-8
def loldata(page):
url = f'https://tieba.baidu.com/f?kw=lol&ie=utf-8&pn={page}'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'
}
response = requests.get(url, headers=headers).text
result = re.findall('<a rel="noopener.*target="_blank" class="j_th_tit ">(.*)</a>', response)
content = re.findall('''<div class="threadlist_abs threadlist_abs_onlyline ">\n\W*(.*?)\n.*</div>''',
response)
print(len(result))#标题条数
print(len(content))#内容条数
#首页置顶的三个标题没有对应的内容
if page==0:
for i in range(len(result)):
if i <= 2:
print(result[i])
f.write(f'{result[i]}\n')
else:
print(result[i], '====', content[i - 3])
f.write(f'{result[i]},{content[i - 3]}\n')
#其他页标题数=内容数
else:
for i in range(len(result)):
print(result[i], '====', content[i])
f.write(f'{result[i]},{content[i]}\n')
if __name__ == '__main__':
num=50
page=0
m=1
with open('lol贴吧.csv', 'w', encoding='utf-8') as f:
for i in range(10):
print(f'<===========第{m}页=============>')
loldata(page)
page += num
m += 1
运行结果:从结果可以看出 都是一些问答数据