學習抓取貓眼電影排行

2021-09-10 08:32:38 字數 1655 閱讀 5652

抓取目標貓眼電影top100的電影資訊

使用requests和正規表示式

抓取分析

站點url為,開啟看到榜單資訊等

跳轉第二頁url變為?offset=10,第三頁?offset=20,對比不難發現url中引數offset代表電影序號偏移量。

抓取首頁

import requests

def get_one_page(url):

headers =

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

if r.status_code == 200:

return r.text

return none

def main():

url = ''

html = get_one_page(url)

print(html)

main()

正則提取內容

首先是排名資訊,class=「board-index」,用非貪婪匹配,正則寫為.*?board-index.*?>(.*?)

同樣原理,最後的正規表示式為.*?board-index.*?>(.*?).*?data-src="(.*?)".*?name.*?>(.*?).*?star.*?>(.*?)

.*?releasetime.*?>(.*?)

.*?interger.*?>(.*?).*?fraction.*?>(.*?)

定義成函式

def parse_one_page(html):

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

.*?releasetime">(.*?)

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

items = re.findall(pattern, html)

for item in items:

yield

將資訊寫入檔案

def write_to_file(content):

with open('result.txt', 'a', encoding='utf-8') as f:

f.write(json.dumps(content, ensure_ascii=false) + '\n')

分頁爬取

if __name__ == '__main__':

for i in range(10):

main(offset=i * 10)

time.sleep(1)

優化下主函式

def main(offset):

url = '' + str(offset)

html = get_one_page(url)

for item in parse_one_page(html):

print(item)

write_to_file(item)

抓取貓眼電影排行

首先將第乙個頁面抓取下來 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...