天天看點

python爬蟲爬取豆瓣電影資訊

我們準備使用python的requests和lxml庫,直接安裝完之後開始操作

目标爬取肖申克救贖資訊->傳送門

導入庫

import requests
from lxml import etree
           

給對外連結接

url=‘https://movie.douban.com/subject/1292052/?tag=%E7%BB%8F%E5%85%B8&from=gaia_video’
           

擷取網頁html前端代碼一行搞定,在requests中已經封裝好了

data = requests.get(url).text
           

lxml庫中封裝了解析下載下傳頁面資料的函數

s = etree.HTML(data)
           

然後我們到豆瓣中擷取需要爬取資料的xpath

python爬蟲爬取豆瓣電影資訊

右鍵->copy->xpath我們就拿到了這樣的一串資料

//*[@id="content"]/h1/span[1]
           

然後我們擷取資料内容

film = s.xpath('//*[@id="content"]/h1/span[1]/text()')
           

注意最後面的/text()是擷取文本類型的資料不然會出錯

最後直接print(film)即可

完整代碼如下

import requests
from lxml import etree
url = 'https://movie.douban.com/subject/1292052/?tag=%E7%BB%8F%E5%85%B8&from=gaia_video'    # 定義url
data = requests.get(url).text   # 擷取全部html
s = etree.HTML(data)

film = s.xpath('//*[@id="content"]/h1/span[1]/text()')
print(film)
           

進階

接下來我們想爬取主演

在演員上右鍵copy -> copy xpath

我們會有這樣一串xpath

//*[@id="info"]/span[3]/span[2]/span[1]/a
//*[@id="info"]/span[3]/span[2]/span[2]/a
//*[@id="info"]/span[3]/span[2]/span[3]/a
……
           

我們發現這一組xpath似乎是封裝在一個大的span标簽數組之中,是以我們直接取拿span[2]裡面的a/text()

actor = s.xpath('//*[@id="info"]/span[3]/span[2]/a/text()')
           

我們獲得了以下的運作結果,直接可以擷取清單中的全部标簽(删去最後的span數組和a标簽)之後我們可以直接拿到目前頁面的所有的電影名稱。

python爬蟲爬取豆瓣電影資訊

這裡需要注意,因為目前我們聯系的豆瓣網頁中所有的電影的标簽都是封裝在

  • 标簽之中的是以他們的@title内容可以通過直接通路父數組得到
  • 看代碼
    import requests
    from lxml import etree
    
    url = 'https://movie.douban.com/top250'    # 定義url
    data = requests.get(url).text   # 擷取全部html
    s = etree.HTML(data)
    film = s.xpath('//*[@id="content"]/div/div[1]/ol/li')   # 拿到所有的li标簽
    
    for div in film:
        film_name = div.xpath('./div/div[2]/div[1]/a/span[1]/text()')[0]    # [0]的u作用  因為擷取到的事list清單是以用這個來擷取str
        film_score= div.xpath('./div/div[2]/div[2]/div/span[2]/text()')[0]
        film_msg = div.xpath('./div/div[2]/div[2]/p[2]/span/text()')[0]
        print('{} {} {}'.format(film_name,film_score,film_msg))     # 格式化輸出
               
    運作結果
    python爬蟲爬取豆瓣電影資訊
    這個代碼可以直接拿過去用,自己可以運作試一試。

    爬取所有的top250電影資訊

    過幾天再寫。。。。