漫威粉丝,恰恰最近在学习python爬虫,于是就照着参考书目做了一个可以爬取豆瓣短评的爬虫,结果输出到txt文档,之后便可以进行词云分析,搞一些好玩的东西啦,话不多说,上代码。
import requests
from bs4 import BeautifulSoup
首先是两个需要用到的包,一个requests用于请求网页,一个beautiful soup用于解析网页,获取我们想要的内容。
def get_comments(url_comments): #定义评论爬取函数 headers ={ ("User-Agent":'Mozilla/5.0(Windows ;U;Windows NT 6.1;Win64;x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36'), 'Host':'movie.douban.com' } #定义爬虫请求头 comments_list=[] #定义存储评论的列表 for i in range(0,10): link=url_comments+str(i*20) #换页 r=requests.get(link,headers= headers,timeout=20) print (str(1),"页响应状态码:",r.status_code) soup=BeautifulSoup(r.text,"lxml") #利用beautifulsoup进行页面解析 div_list =soup.find_all('div',class_='comment') #获取类型为comment标签为div后的文本 for each in div_list: comment=each.p.text.strip() comments_list.append(comment) return comments_list
然后就是定义了一个获取评论的函数,参数为需要获取短评的网页的链接(入门级代码,后续会完善到输入电影名称)
接下来就是调用了。
host_l=input('please paste the urls and ended at \'start=\'') #输入短评链接
comments=get_comments(host_l)
with open('avengers_comments.txt',"a+",encoding='utf-8') as f: #输出到txt
# 对txt及进行重新编码
f.write(str(comments))
f.close()
print("文件已写入")
注释都在文中,截至至2018年5月23日,这个代码都是没有问题的。
供和我一样初出茅庐的人学习参考。
以上便是复联3豆瓣短评爬下来的部分内容了。
完整代码如下:
import requests
from bs4 import BeautifulSoup
def get_comments(url_comments): #定义评论爬取函数
headers ={
"User-Agent":'Mozilla/5.0(Windows;U;Windows NT 6.1;Win64;x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36',
'Host':'movie.douban.com'
} #定义爬虫请求头
comments_list=[] #定义存储评论的列表
for i in range(0,10):
link=url_comments+str(i*20) #换页
r=requests.get(link,headers= headers,timeout=20)
print (str(1),"页响应状态码:",r.status_code)
soup=BeautifulSoup(r.text,"lxml") #利用beautifulsoup进行页面解析
div_list =soup.find_all('div',class_='comment') #获取类型为comment标签为div后的文本
for each in div_list:
comment=each.p.text.strip()
comments_list.append(comment)
return comments_list
host_l=input('please paste the urls and ended at \'start=\'') #输入短评链接
comments=get_comments(host_l)
with open('avengers_comments.txt',"a+",encoding='utf-8') as f: #输出到txt
# 对txt及进行重新编码
f.write(str(comments))
f.close()
print("文件已写入")
感谢参考,欢迎交流学习。