由於最近一直在學習爬蟲,之前寫了一篇爬取圖示的文章,其中用到了urllib模組。這裡我們將不再使用urllib模組。
這裡使用requests模組和BeautifulSoup4模組
爬取內容為:豆瓣評分前二百五位電影的名字、主演、以及該電影的簡介。
首先先進入豆瓣電影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()
執行後得到