python爬取豆瓣top250最簡單方法

python爬取豆瓣電影排名及相關信息
這個程序是我自己先開始做,在爬取的過程中遇到了很多問題,畢竟是初學者,然後在百度找了一些別人的程序參考,改正了錯誤,同時也學到了很多,起碼同樣的錯誤不會再犯第二次。
下面講講我做這個小爬蟲過程


首先找到豆瓣TOP250的url
豆瓣TOP250.(https://movie.douban.com/top250)

安裝lxml庫

打開終端命令窗口

pip install lxml

安裝完成後,檢測是否安裝成功
打開python IDLE輸入

import lxml

from lxml import etree

如果沒有報錯,說明安裝成功

導入lxml庫

from lxml import etree

導入requests庫

import requests

輸入url

url = 'https://movie.douban.com/top250'

獲得響應

>>> import requests
>>> url = 'https://movie.douban.com/top250'
>>> r=requests.get(url)
>>> r.status_code
418
>>> 

可以看到豆瓣網返回值爲418,說明不能成功訪問,只有返回值爲200才能成功訪問。
這時候我們需要修改頭部信息

修改headers

>>> import requests
>>> url = 'https://movie.douban.com/top250'
>>> r=requests.get(url)
>>> r.status_code
418
>>> kv={'user-agent':'Mozilla/5.0'}
>>> r=requests.get(url,headers=kv)
>>> r.status_code
200
>>> 

這樣返回值爲200,說明可以訪問

獲得網頁代碼

data = requests.get(url,headers=kv).text
s = etree.HTML(data)

爬取電影名稱

movies = s.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[1]/a/span[1]/text()')
for i in range(25):  
    print("{}".format(movies[i]))

輸出結果如下
在這裏插入圖片描述
你可能會疑惑movies = s.xpath()裏的內容是怎麼得來的
在谷歌瀏覽器中打開豆瓣TOP250的網址,進入網頁後,按F12鍵啓動瀏覽器開發工具
如下圖所示
在這裏插入圖片描述
我感覺讓它在網頁底部顯示比較方便操作
在這裏插入圖片描述
點擊X右邊的那三個垂直排列的小點,會顯示紅圈中的內容,第三個就是設置底部顯示。

如果你懂一點HTML語言知識會很有幫助,找到電影名稱的標籤,鼠標右擊選擇複製(Copy),在複製類型中選擇 Copy XPath類型然後粘貼到movies = s.xpath()的括號中,注意用引號括起來
複製內容應該是這個(//*[@id=“content”]/div/div[1]/ol/li[1]/div/div[2]/div[1]/a/span[1]),把li[1]的‘[1]'去掉,這樣才能顯示整個列表。
在這裏插入圖片描述

爬取豆瓣評分和其他相關信息

用同樣的方法爬取豆瓣評分、演員名字、時間、地點、類型等信息

score = s.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[2]/div/span[2]/text()')
actor = s.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[2]/p[1]/text()[1]')
time = s.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[2]/p[1]/text()[2]')

完整代碼和輸出結果

from lxml import etree
import requests
url = 'https://movie.douban.com/top250'
kv={'user-agent':'Mozilla/5.0'}
data = requests.get(url,headers=kv).text
s = etree.HTML(data)
movies = s.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[1]/a/span[1]/text()')
score = s.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[2]/div/span[2]/text()')
actor = s.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[2]/p[1]/text()[1]')
time = s.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[2]/p[1]/text()[2]')
for i in range(25):
    print("{} {} {} {}".format(movies[i],score[i],actor[i],time[i]))

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
好了,這個小爬蟲就結束啦,記得點贊哦在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章