正則匹配的抓取貓眼電影排行Top100

2021-08-21 10:01:03 字數 2914 閱讀 8295

csdn部落格:皮乾東

知乎:htrying

微博:htring的微博

github:htring

需要安裝requests包(安裝方式:在配好的環境中:pip install requests即可)

通過開啟網頁,找到網頁之間的規律,如圖:

可以發現頁面的url變成:比之前的url多乙個引數,offset=10,並且目前顯示的結果是:11~20名的電影,由此可以找到其他排名電影頁面的url規律。

在瀏覽器端的開發者模式下的network監聽元件下檢視原始碼,如圖:

而每個電影的內容都在乙個dd標籤下:

正規表示式書寫:

.*?board-index.*?>(\d+)i>.*?data-src="(.*?)".*?name">

+ '.*?>(.*?)a>.*?star">(.*?)p>.*?releasetime">(.*?)p>'

+ '.*?integer">(.*?)i>.*?fraction">(.*?)i>.*?dd>

需要說明的是:以上的每個括號表示的就是要獲取的內容。

在獲取提取的結果後,我們將資料寫到乙個txt文件中,這裡資料是使用json格式的內容書寫的。

#爬蟲庫

import requests

#json資料格式庫

import json

#requests異常

from requests.exceptions import requestexception

#正規表示式

import re

#延遲函式

import time

#定義乙個讀取乙個url並返回相應資訊的函式

defget_one_page

(url):

try:

#偽裝瀏覽器

headers=

#讀取網頁

response=requests.get(url,headers=headers)

#判斷是否讀取成功

if response.status_code==200:

#返回讀取的內容(html**)

return response.text

return

none

except requestexception:

return

none

#定義乙個解析html**的函式

defparse_one_page

(html):

#編譯成乙個正規表示式物件

pattern = re.compile(r'.*?board-index.*?>(\d+).*?data-src="(.*?)".*?name">+ '.*?>(.*?).*?star">(.*?)

.*?releasetime">(.*?)

' + '.*?integer">(.*?).*?fraction">(.*?).*?', re.s)

#開始查詢

items = re.findall(pattern, html)

#遍歷查詢到的內容

for item in items:

#使用關鍵字yield 類似於return 返回的是乙個生成器物件

yield

#將結果寫到乙個txt文件中

#開啟需要爬取得所有網頁,並進行爬取

defmain

(offset):

#網頁鏈結

url=''+str(offset)

#請求網頁,獲取html

html=get_one_page(url)

#遍歷處理後的html結果

for item in parse_one_page(html):

pic_download(item['image'], item['title'])

#寫入到檔案中

write_to_file(item)

if __name__ == '__main__':

for i in range(10):

main(offset=i*10)

#延遲1秒,避免反爬機制

抓取貓眼電影排行

首先將第乙個頁面抓取下來 import requests 抓取乙個 def get one page url headers response requests.get url,headers headers 判斷響應的狀態碼 if response.status code 200 return r...

抓取貓眼電影排行

今天學習 python3網路爬蟲 第三章時,在章節尾部的爬取貓眼電影排行練習中成功實現,但這一部分有點不明白,先記錄下來 def get one page url try headers response requests.get url,headers headers if response.st...

抓取貓眼電影排行

抓取貓眼電影排行 1.抓取分析 需要抓取的目標url為 開啟之後便可以檢視到電影的排行,如下圖 可以發現第二頁的url為第三頁的url為以此類推。2.抓取第一頁 定義乙個函式用於抓取乙個頁面,函式的引數就是url,將我們要抓取頁面的url傳給函式,返回的結果就是伺服器端的響應。import requ...