豆瓣高分电影爬取

参考文档
百度云分享
链接:https://pan.baidu.com/s/1D-NS3oNBIaMNmyu4LykAAw
密码:4bq5

1 基本流程

豆瓣高分电影爬取_第1张图片

2 准备工作

2.1 分析页面

F12 进入开发者工具,在Elements下找到需要的数据位置

3获取数据

3.1编码规范

· 第一行行需要加入#coding=utf-8
这样可以在代码中包含中文
· main函数用于测试
if __name__=="__main__":
·添加#为注释

3.2引入模块

impor sys
from bs4 import BeautifulSoup
import re
import urllib
import xlwt

主流程

main()
print("爬取完成,请查看.xls文件")
def main():
 print("开始爬取.....")
 baseurl='网址'
 datalist=getData(baseurl)
 savepath=u'存储excel地址'
 saveData(datalist,savepath)

3.3获取数据

·使用urllib2库获取页面

for i in range(0,10):
 url=baseurl+str(i*25)
 html=askURL(url)

·#得到页面全部内容

def askURL(url):
      request=urllib.request.Request(url)#发送请求
      try:
           response=urllib.request.urlopen(request)#取得响应
           html=response.read()#获取网页内容
           print(html)
        except urllib.error.URLError as e:
           if hasattr(e,"code"):
             print(e.code)
           if hasattr(e,"reason"):
             print(e.reason)
         return html
           

4解析内容

4.1对爬取的html文件进行解析

·使用beautifulsoup定位特定的标签位置
·使用正则表达式找到具体的内容

soup=Beautifulsoup(heml,"html.parser")
for item in soup.find_all('div',class_='item'):#找到每一个影片项
  data=[]
  item=str(item)#转化成字符串
  #影片详情链接
  link=re.findall(findlink,item)[0]
  data.append(link)#添加详情链接
  imgsrc=re.findall(findimgsrc.item)[0]
  data.append(imgsrc)#添加图片链接
  titles=re.findall(findtitle,item)
  #片名可能只有一个中文名,没有外国名
  if(len(titles)==2);
    ctitle=titles[0]
    data.append(ctitle)#添加中文片名
    otitle=titles[1].replace("/","")#去掉无关符号
    data.append(otitle)#添加外国片名
  else:
    data.append(titles[0])#添加中文片名
    data.append(' ')#留空
  rating=re.findall(findrating,item)[0]
  data.append(rating)#添加评分
  judgenum=re.findall(findjudge,item)[0]
  data.append(judgenum)#添加评论人数
  inq=re.findall(findinq,item)
  #可能没有情况
  if len(inq)!=0:
    inq=inq[0].replace("。","")#去掉句号
    data.append(inq)#添加概况
  else:
    data.append(' ')#留空
  bd=re.findall(findBd,item)[0]
  bd=re.sub(remove,"",bd)
  bd=re.sub('(\s+)?'," ",bd)#去掉
  bd=re.sub('/'," ",bd)#替换
  data.append(bd.strip())
  datalist.append(data)```
# 5保存数据

savepath=u’存储excel地址’
savedata(datalist,savepath)
``
调用

#将相关数据写入excel中
def savedata(datalist,savepath):
  book=xlwt.workbook(encoding='utf-8',style_compression=0)
  sheet=book.add_sheet('豆瓣电影Top250',cell_overwrite_ok=true)
  col=('电影详情链接','图片链接','影片中文名','影片外国名','评分',
             '评价数','概况','相关信息')
    for i in range(0,8):
      sheet.write(o,i,col[i])#列名
     for i in range(0,250):
       data=datalist[i]
       for j in range(0,8):
         sheet.write(i+1,j,data[j])#数据
        book.save(savepath)#保存
         ```

你可能感兴趣的:(豆瓣高分电影爬取)