python使用re模塊實現爬取豆瓣Top250電影?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
爬蟲四步原理:
1.發送請求:requests
2.獲取相應數據:對方及其直接返回
3.解析并提取想要的數據:re
4.保存提取后的數據:with open()文件處理
爬蟲三步曲:
1.發送請求
2.解析數據
3.保存數據
注意:豆瓣網頁爬蟲必須使用請求頭,否則服務器不予返回數據
import re
import requests
# 爬蟲三部曲:
# 1.獲取請求
def get_data(url, headers):
response = requests.get(url, headers=headers)
# 如果爬取的是html文本就是用.text方法獲取文本數據,如果爬取的是音視頻就用.content方法獲取二進制流數據
# print(response.text) # 獲取相應文本,比如html代碼
return response.text
# 2.解析數據
def parser_data(text):
# re.findall("正則表達式", "過濾的文本", re.S) # 匹配模式:re.S 全局模式
data = re.findall(
'<div class="item">.*?<a href="(.*?)" rel="external nofollow" >.*?<span class="title">(.*?)</span>.*?<span class="rating_num" property="v:average">(.*?)</span>.*?<span>(.*?)人評價</span>', text, re.S)
for move_info in data:
yield move_info
# 3.保存數據
def save_data(res_list_iter):
with open("豆瓣TOP250.txt", "a", encoding="utf-8") as f:
for i in res_list_iter:
move_page, move_title, move_score, move_evaluation = i
# print(move_page, move_title, move_score, move_evaluation)
str1 = f"電影名字:《{move_title}》 電影評分:{move_score} 電影評價:{move_evaluation} 電影詳情頁:{move_page}\n"
f.write(str1)
# 使用請求頭請求數據
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 \
Safari/537.36'
}
n = 0
# 獲取10個鏈接
for i in range(10):
url = f"https://movie.douban.com/top250?start={n}&filter=="
n += 25
text = get_data(url, headers)
res_list_iter = parser_data(text)
save_data(res_list_iter)執行結果:

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。