码迷,mamicode.com
首页 > 其他好文 > 详细

团队-爬取豆瓣电影TOP250-开发文档

时间:2017-11-03 20:29:34      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:app   erro   end   src   findall   pil   enum   turn   urllib   

码云地址:https://gitee.com/nothingbigger/DouBantop250

所需编程语言:python

主要工作:代码补全及bug检查修改

部分代码:

 1 #!/usr/bin/python
 2 #-*- coding: utf-8 -*-
 3 import sys
 4 reload(sys)
 5 sys.setdefaultencoding(utf8)
 6 from bs4 import BeautifulSoup
 7 import re
 8 import urllib2
 9 import xlwt
10 
11 #得到页面全部内容
12 def askURL(url):
13     request = urllib2.Request(url)#发送请求
14     try:
15         response = urllib2.urlopen(request)#取得响应
16         html= response.read()#获取网页内容
17         #print html
18     except urllib2.URLError, e:
19         if hasattr(e,"code"):
20             print e.code
21         if hasattr(e,"reason"):
22             print e.reason
23     return html
24 
25 #获取相关内容
26 def getData(baseurl):
27     findLink=re.compile(r<a href="(.*?)">)#找到影片详情链接
28     findImgSrc=re.compile(r<img.*src="(.*jpg)",re.S)#找到影片图片
29     findTitle=re.compile(r<span class="title">(.*)</span>)#找到片名
30     #找到评分
31     findRating=re.compile(r<span class="rating_num" property="v:average">(.*)</span>)
32     #找到评价人数
33     findJudge=re.compile(r<span>(\d*)人评价</span>)
34     #找到概况
35     findInq=re.compile(r<span class="inq">(.*)</span>)
36     #找到影片相关内容:导演,主演,年份,地区,类别
37     findBd=re.compile(r<p class="">(.*?)</p>,re.S)
38     #去掉无关内容
39     remove=re.compile(r                            |\n|</br>|\.*)
40     datalist=[]
41     for i in range(0,10):
42         url=baseurl+str(i*25)
43         html=askURL(url)
44         soup = BeautifulSoup(html)
45         for item in soup.find_all(div,class_=item):#找到每一个影片项
46             data=[]
47             item=str(item)#转换成字符串
48             #print item
49             link=re.findall(findLink,item)[0]
50             data.append(link)#添加详情链接
51             imgSrc=re.findall(findImgSrc,item)[0]
52             data.append(imgSrc)#添加图片链接
53             titles=re.findall(findTitle,item)
54             #片名可能只有一个中文名,没有外国名
55             if(len(titles)==2):
56                 ctitle=titles[0]
57                 data.append(ctitle)#添加中文片名
58                 otitle=titles[1].replace(" / ","")#去掉无关符号
59                 data.append(otitle)#添加外国片名
60             else:
61                 data.append(titles[0])#添加中文片名
62                 data.append( )#留空
63             rating=re.findall(findRating,item)[0]
64             data.append(rating)#添加评分
65             judgeNum=re.findall(findJudge,item)[0]
66             data.append(judgeNum)#添加评论人数
67             inq=re.findall(findInq,item)
68             #可能没有概况
69             if len(inq)!=0:
70                 inq=inq[0].replace("","")#去掉句号
71                 data.append(inq)#添加概况
72             else:
73                 data.append( )#留空
74             bd=re.findall(findBd,item)[0]
75             bd=re.sub(remove,"",bd)
76             bd=re.sub(<br>," ",bd)#去掉<br>
77             bd=re.sub(/," ",bd)#替换/
78             #data.append(bd)
79             words=bd.split(" ")
80             for s in words:
81                 if len(s)!=0 and s!= :#去掉空白内容
82                      data.append(s)
83             #主演有可能因为导演内容太长而没有
84             if(len(data)!=12):
85                 data.insert(8, )#留空
86             datalist.append(data)
87     return datalist

 

团队-爬取豆瓣电影TOP250-开发文档

标签:app   erro   end   src   findall   pil   enum   turn   urllib   

原文地址:http://www.cnblogs.com/a1s2/p/7780103.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!