(8)Python爬虫——爬取豆瓣影评数据
来源:互联网 发布:js数组 key push 编辑:程序博客网 时间:2024/04/30 04:24
利用python爬取豆瓣最受欢迎的影评50条的相关信息,包括标题,作者,影片名,影片详情链接,推荐级,回应数,影评链接,影评,有用数这9项内容,然后将爬取的信息写入Excel表中。具体代码如下:
#!/usr/bin/python#-*- coding: utf-8 -*-import sysreload(sys)sys.setdefaultencoding('utf8')from bs4 import BeautifulSoupimport reimport urllib2import xlwt#得到页面全部内容def askURL(url): request = urllib2.Request(url)#发送请求 try: response = urllib2.urlopen(request)#取得响应 html= response.read()#获取网页内容 #print html except urllib2.URLError, e: if hasattr(e,"code"): print e.code if hasattr(e,"reason"): print e.reason return html#获取相关内容def getData(baseurl): #找到评论标题 pattern_title = re.compile(r'<a class="".+title="(.+)"') #找到评论全文链接 pattern_link = re.compile(r'<a class="".+href="(.+review.*?)"') #找到作者 pattern_author = re.compile(r'<a.+people.+">(.+)</a>') #找到评论的影片和影评详情链接 pattern_subject_link = re.compile(r'<a href="(.+subject.+)" title="(.+)">') #找到推荐等级 pattern_star=re.compile(r'<span class="allstar\d+" title="(.+)"></span>') #找到回应数 pattern_response=re.compile(r'<span class="">\((\d+)回应\)</span>') #找到有用数 pattern_use=re.compile(r'<em id="ucount\d+u">(\d+)</em>') remove=re.compile(r'<.+?>')#去除标签 datalist=[] for i in range(0,5):#总共5页 url=baseurl+str(i*10)#更新url html=askURL(url) soup = BeautifulSoup(html) #找到每一个影评项 for item in soup.find_all('ul',class_='tlst clearfix'): data=[] item=str(item)#转换成字符串 #print item title = re.findall(pattern_title,item)[0] #print title reviewlink=re.findall(pattern_link,item)[0] data.append(title)#添加标题 author=re.findall(pattern_author, item)[0] data.append(author)#添加作者 list_subject_link = re.findall(pattern_subject_link, item)[0] moviename=list_subject_link[1] movielink=list_subject_link[0] data.append(moviename)#添加片名 data.append(movielink)#添加影片链接 star=re.findall(pattern_star,item)[0] data.append(star)#添加推荐等级 response=re.findall(pattern_response,item) #回应数可能为0,就找不到 if(len(response)!=0): response=response[0] else: response=0 data.append(response)#添加回应数 data.append(reviewlink)#添加评论正文链接 content=askURL(reviewlink) use=re.findall(pattern_use,content) #有用数可能为0,就找不到 if len(use)!=0: use=use[0] else: use=0 content=BeautifulSoup(content) desc=content.find_all('div',id='link-report')[0] desc=re.sub(remove,'',str(desc))#去掉标签 data.append(desc)#添加评论正文 data.append(use)#添加有用数 datalist.append(data) return datalist#将相关数据写入excel中def saveData(datalist,savepath): book=xlwt.Workbook(encoding='utf-8',style_compression=0) sheet=book.add_sheet('豆瓣最受欢迎影评',cell_overwrite_ok=True) col=('标题','作者','影片名','影片详情链接','推荐级','回应数','影评链接','影评','有用数') for i in range(0,9): sheet.write(0,i,col[i])#列名 for i in range(0,50):#总共50条影评 data=datalist[i] for j in range(0,9): sheet.write(i+1,j,data[j])#数据 book.save(savepath)#保存def main(): baseurl='http://movie.douban.com/review/best/?start=' datalist=getData(baseurl) savapath=u'豆瓣最受欢迎影评.xlsx' saveData(datalist,savapath)main()
Excel部分内容如下:
国家代表的影评正文如下:
2 0
- (8)Python爬虫——爬取豆瓣影评数据
- python爬虫爬取豆瓣top250电影影评
- python爬虫(豆瓣影评)
- 爬取豆瓣影评数据
- 使用python爬取《长城》豆瓣影评
- 爬虫实践---Scrapy-豆瓣电影影评&深度爬取
- Python—爬虫—简单爬取豆瓣电影
- python爬虫爬取《战狼Ⅱ》影评
- 爬取豆瓣影评TOP250Demo
- python爬虫-豆瓣数据爬取-正则匹配
- python爬虫-豆瓣爬取数据保存为html文件
- Python 简单爬虫 豆瓣热门影评
- python爬虫实战:《星球大战》豆瓣影评分析
- (7)Python爬虫——爬取豆瓣电影Top250
- Python爬虫(1)——基于BeautifulSoup爬取豆瓣电影信息
- python3 爬虫—爬取豆瓣电影图片(一)
- Python爬虫 爬取豆瓣读书
- [python爬虫]--爬取豆瓣音乐topX
- 计算流图中的前必经节点
- fuel 5.1在vmware esxi上的部署
- 基于密度的聚类算法(DBSCAN)的java实现
- iOS设置tabbar的显示之 imageWithRenderingMode:
- Find the Spy
- (8)Python爬虫——爬取豆瓣影评数据
- 蓝桥杯 历届试题 奇怪的比赛
- 深入理解Intent和IntentFilter
- SessionId
- 知乎日报(Know almost daily chrome version)
- 关于struts2接受参数
- 一个链表L 一个链表P 包含升序排列的整数 操作PrintLots(L,P)将打印L中那些由P所指定的位置上的元素
- Java main方法
- oracle 11g asm安装