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

码云地址: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

 

posted @ 2017-11-03 19:25  nothingisimpossible  阅读(281)  评论(0编辑  收藏  举报