python爬取豆瓣電影排行榜

# -*- coding: utf-8 -*-

import pandas
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
from bs4 import BeautifulSoup
import requests
import time

urls=['https://movie.douban.com/top250?start={}&filter='.format(str(i)) for i in range(0,250,25)]
#url='https://movie.douban.com/mine?status=wish'
headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36',
    'Cookie':'gr_user_id=1ba0f40c-adb5-4011-9f66-ef641710c42e; viewed="1419678_1786120"; RT=s=1466650874130&r=https%3A%2F%2Fmovie.douban.com%2Ftop250%3Fstart%3D75%26filter%3D; ll="108091"; __utmt_t1=1; __utma=30149280.1565775292.1453707266.1466481018.1466650178.19; __utmb=30149280.15.8.1466650881759; __utmc=30149280; __utmz=30149280.1466650178.19.18.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; bid="0K5aWKIHxEU"'
}

title=[]
image=[]
actor=[]
empression=[]
rate=[]
evalu_num=[]
#爬取并顯示top250電影的名稱(chēng),圖片地址,演員等
def allfilm(web_url,data=None):    
    web_data=requests.get(web_url,headers = headers)
    soup=BeautifulSoup(web_data.text,'lxml')
    time.sleep(2)
    titles=soup.select('#content > div > div.article > ol > li > div > div.info > div.hd > a')
    images=soup.select('#content > div > div.article > ol > li > div > div.pic > a > img')
    actors=soup.select('#content > div > div.article > ol > li > div > div.info > div.bd > p:nth-of-type(1)') #bd樹(shù)下的第一個(gè)p標(biāo)籤
    empressions=soup.select('#content > div > div.article > ol > li > div > div.info > div.bd > p:nth-of-type(2)')
    rates=soup.select('#content > div > div.article > ol > li > div > div.info > div.bd > div > span.rating_num')
    evalu_nums=soup.select('#content > div > div.article > ol > li > div > div.info > div.bd > div > span:nth-of-type(4)')
    #content > div > div.article > ol > li:nth-child(1) > div > div.info > div.bd > div > span:nth-child(4)
    #content > div > div.article > ol > li:nth-child(2) > div > div.info > div.bd > div > span:nth-child(4)

    for title1,image1,actor1,empression1,rate1,evalu_num1 in zip(titles,images,actors,empressions,rates,evalu_nums):
        title.append(title1.get_text().replace('\\xa0',' ').strip()),
        image.append(image1.get('src')),
        actor.append(actor1.get_text().replace('\\xa0',' ').strip()),
        empression.append(empression1.get_text()),
        rate.append(rate1.get_text()),
        evalu_num.append(evalu_num1.get_text())

for sigle_url in urls:
    allfilm(sigle_url)
data={'title':title,
      'image':image,
      'actor':actor,
      'empression':empression,
      'rate':rate,
      'evalu_num':evalu_num} 
     
#frame=DataFrame(data,columns=[u'電影名',u'圖片鏈接',u'演員',u'印象',u'評(píng)分',u'評(píng)價(jià)數(shù)'])
print('done!!')
frame=DataFrame(data,columns=['title','image','actor','empression','rate','evalu_num'])
frame.columns=[u'電影名',u'圖片鏈接',u'演員',u'印象',u'評(píng)分',u'評(píng)價(jià)數(shù)']
#將dataframe數(shù)據(jù)寫(xiě)入csv或xlsx文件
frame.to_excel('C:\\Users\\zhchenjia\\Desktop\doubanfilm.xlsx',index=True)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容