实验内容为爬取百度贴吧星空吧的30条回复数大于等于3以上的帖子,将帖子及其所有回复内容保存到以帖子标题命名的html文件中。
个人代码:
#引入第三方库
from bs4 import BeautifulSoup
import requests
#查找信息
i,num=0,0#页码,记录帖子数量
while num<30:
code=requests.get(url="https://tieba.baidu.com/f?kw=星空&ie=utf-8&pn="+str(i*50))#发送网址请求,i决定页码
code.encoding = 'utf-8'
code=BeautifulSoup(code.text, "html.parser")#转文本
content=code.find_all('div', class_='t_con cleafix')#找到所有帖子
for item in content:
reply_num=item.find_all("span",class_="threadlist_rep_num center_text")#找到各个帖子下的回复数
if int(reply_num[0].text)>=3:#如果回复数至少为3
num+=1#记录一个帖子,数量+1
inf=item.find('a', class_= 'j_th_tit')#获取帖子信息
title=inf.attrs["title"].strip()#获取帖子标题
href=inf.attrs['href']#获取帖子超链接
web='https://tieba.baidu.com'+href#获取帖子网址
code1=requests.get(url=web)#发送网址请求
code1.encoding = 'utf-8'
code1=BeautifulSoup(code1.text, "html.parser")#转文本
content1=code1.find_all("div",class_="d_post_content j_d_post_content ")#获取帖子内容与回复内容
f=open('E:/files/experienment_5/'+title+'.html',"a")
for j in content1:
f.write(j.text)#写入文件
f.close()
i+=1
跑下来最成功的一次是30个html文件是空白的,其他情况要么是无响应,要么是中间报错