由於最近一直在學習爬蟲,之前寫了一篇爬取圖示的文章,其中用到了urllib模組。這裡我們將不再使用urllib模組。

這裡使用requests模組和BeautifulSoup4模組

爬取內容為:豆瓣評分前二百五位電影的名字、主演、以及該電影的簡介。

首先先進入豆瓣電影Top250,開啟審查元素,找到所要爬取的電影名、主演以及電影主頁的連結都在標籤

中間,如下圖所示

利用Python爬取豆瓣TOP250的電影

下面是程式碼及註釋

#匯入模組

import requests

from bs4 import BeautifulSoup

def url_open(url): # 開啟每個地址

#新增header,偽裝成瀏覽器

headers = {

“User-Agent”: “Mozilla/5。0 (Windows NT 10。0; WOW64) AppleWebKit/537。36 (KHTML, like Gecko) Chrome/55。0。2883。87 Safari/537。36”}

res = requests。get(url, headers=headers)

return res

# 建立三個儲存資訊的列表

name_list = []

info_list = []

rate_list = []

#獲取電影名字

def get_name(soup, name_list):

targets = soup。find_all(“div”, class_=“hd”)

for each in targets:

name_list。append(each。a。span。text)

#獲取電影資訊

def get_info(soup, info_list):

targets = soup。find_all(“div”, class_=‘bd’)

for each in targets:

try:

info_list。append(each。p。text。split(‘\n’)[1]。strip() + each。p。text。split(‘\n’)[2]。strip())

except:

continue

#獲取電影評分

def get_rate(soup, rate_list):

targets = soup。find_all(“span”, class_=“rating_num”)

for each in targets:

rate_list。append(each。text)

#將獲取資訊寫入TXT檔案

def write_into(name_list, info_list, rate_list):

with open(“豆瓣Top250電影。txt”, “w”, encoding=“utf-8”) as f:

for i in range(250):

f。write(name_list[i]+ ‘ 評分:’+ rate_list[i]+‘ ’ + info_list[i] +‘\n\n’)

url = []

for i in range(10): # 得到十個頁面地址

url。append(“https://movie。douban。com/top250?start=%d&filter=” \

% (i * 25))

def main():

#遍歷每個頁面連結並獲取資訊

for each_url in url:

res = url_open(each_url)

soup = BeautifulSoup(res。text, “html。parser”)

get_name(soup, name_list)

get_info(soup, info_list)

get_rate(soup, rate_list)

write_into(name_list, info_list, rate_list)

#該模組既可以匯入到別的模組中使用,另外該模組也可自我執行

if __name__ == “__main__”:

main()

執行後得到

利用Python爬取豆瓣TOP250的電影