利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,然后将爬取的信息写入Excel表中。基本上爬取结果还是挺好的,具体代码如下:
# !/usr/bin/python # - * -编码:utf - 8 - * 导入系统 重载(系统) sys.setdefaultencoding (use utf8) 从bs4进口BeautifulSoup 进口再保险 进口urllib2 进口xlwt #得到页面全部内容 def askURL (url): 请求=urllib2.Request (url) #发送请求 试一试: 响应=urllib2.urlopen(请求)#取得响应 html=response.read() #获取网页内容 #打印html urllib2除外。URLError e: 如果hasattr (e,“代码”): 打印e.code 如果hasattr (e,“原因”): 打印e.reason 返回的html #获取相关内容 def getData (baseurl): findLink=re.compile (r & lt; a href=" https://www.yisu.com/zixun/(. * ?)“rel=巴獠縩ofollow”在“)#找到影片详情链接 findImgSrc=https://www.yisu.com/zixun/re.compile (r & lt; img。* src=" https://www.yisu.com/zixun/(。* jpg)”, re.S) #找到影片图片 findTitle=re.compile (r & lt;跨类=氨晏狻弊4?. *)& lt;/span>”) #找到片名 #找到评分 findRating=re.compile (r & lt;跨类=皉ating_num”属性=皏:平均”祝辞(. *)& lt;/span>”) #找到评价人数 findJudge=re.compile (r & lt; span> (\ d *)人评价& lt;/span>”) #找到概况 findInq=re.compile (r & lt;跨类=癷nq祝辞(. *)& lt;/span>”) #找到影片相关内容:导演,主演,年份,地区,类别 findBd=re.compile (r & lt; p class="祝辞(* & # 63;)& lt;/p>”, re.S) #去掉无关内容 删除=re.compile (r ' | \ n | & lt;/br> | \。*’) datalist=[] 因为我在范围(0,10): url=baseurl + str(我* 25) html=askURL (url) 汤=BeautifulSoup (html、“html.parser”) 项目在soup.find_all (" div " class_=跋钅俊?:#找到每一个影片项 data=https://www.yisu.com/zixun/[] 项=str(项)#转换成字符串 #打印项 链接=re.findall (findLink项)[0] data.append(链接)#添加详情链接 imgSrc=re.findall (findImgSrc项)[0] data.append (imgSrc) #添加图片链接 标题=re.findall (findTitle项) #片名可能只有一个中文名,没有外国名 如果(len(标题)==2): ctitle[0]=标题 data.append (ctitle) #添加中文片名 otitle=标题[1]。替换("/"," ")#去掉无关符号 data.append (otitle) #添加外国片名 其他: data.append(标题[0])#添加中文片名 数据。追加(' ')#留空 评级=re.findall (findRating项)[0] data.append(评级)#添加评分 judgeNum=re.findall (findJudge项)[0] data.append (judgeNum) #添加评论人数 inq=re.findall (findInq项) #可能没有概况 如果len (inq) !=0: inq=inq [0] .replace(“。”, " ") #去掉句号 data.append (inq) #添加概况 其他: 数据。追加(' ')#留空 bd=re.findall (findBd项)[0] bd=re.sub(删除“bd) bd=re.sub (“& lt; br>”,“”, bd) #去掉& lt; br> bd=再保险。子(“/薄ⅰ癰d) #替换/# data.append (bd) 话说=bd。分割(" ") 年代的词: 如果len (s) !=0年代!=' ':#去掉空白内容 data.append (s) #主演有可能因为导演内容太长而没有 如果(len(数据)!=12): 数据。“插入(8日)#留空 datalist.append(数据) 返回datalist #将相关数据写入excel中 def saveData (datalist savepath): 书=xlwt.Workbook(编码=皍tf - 8”, style_compression=0) 表=book.add_sheet(“豆瓣电影Top250’, cell_overwrite_ok=True) 坳=(“电影详情链接”,“图片链接”、“影片中文名’,‘影片外国名”, “评分”、“评价数”,“概况”,“导演”,“主演”、“年份”,“地区”、“类别”) 因为我在范围(0,12): sheet.write(0,我,[我])上校#列名 因为我在范围(0250): data=https://www.yisu.com/zixun/datalist[我] j的范围(0,12): sheet.write (i + 1, j,数据[j]) #数据 book.save (savepath) #保存 def main (): baseurl=' https://movie.douban.com/top250& # 63;开始=' datalist=getData (baseurl) savapath=u '豆瓣电影Top250.xlsx” saveData (datalist savapath) main () >之前Excel表部分内容如下:
Python爬虫,爬取豆瓣电影Top250代码实例