溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python使用re模塊實現(xiàn)爬取豆瓣Top250電影

發(fā)布時間:2020-10-27 15:17:45 來源:億速云 閱讀:147 作者:Leah 欄目:開發(fā)技術(shù)

python使用re模塊實現(xiàn)爬取豆瓣Top250電影?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

  爬蟲四步原理:

    1.發(fā)送請求:requests

    2.獲取相應(yīng)數(shù)據(jù):對方及其直接返回

    3.解析并提取想要的數(shù)據(jù):re

    4.保存提取后的數(shù)據(jù):with open()文件處理

  爬蟲三步曲:

    1.發(fā)送請求

    2.解析數(shù)據(jù)

    3.保存數(shù)據(jù)

注意:豆瓣網(wǎng)頁爬蟲必須使用請求頭,否則服務(wù)器不予返回數(shù)據(jù)

import re
import requests

# 爬蟲三部曲:
# 1.獲取請求
def get_data(url, headers):
  response = requests.get(url, headers=headers)
  # 如果爬取的是html文本就是用.text方法獲取文本數(shù)據(jù),如果爬取的是音視頻就用.content方法獲取二進(jìn)制流數(shù)據(jù)
  # print(response.text)  # 獲取相應(yīng)文本,比如html代碼
  return response.text

# 2.解析數(shù)據(jù)
def parser_data(text):
  # re.findall("正則表達(dá)式", "過濾的文本", re.S) # 匹配模式:re.S 全局模式
  data = re.findall(
    '<div class="item">.*&#63;<a href="(.*&#63;)" rel="external nofollow" >.*&#63;<span class="title">(.*&#63;)</span>.*&#63;<span class="rating_num" property="v:average">(.*&#63;)</span>.*&#63;<span>(.*&#63;)人評價</span>', text, re.S)
  for move_info in data:
    yield move_info

# 3.保存數(shù)據(jù)
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)

# 使用請求頭請求數(shù)據(jù)
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&#63;start={n}&filter=="
  n += 25
  text = get_data(url, headers)
  res_list_iter = parser_data(text)
  save_data(res_list_iter)

  執(zhí)行結(jié)果:

python使用re模塊實現(xiàn)爬取豆瓣Top250電影

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI