python爬蟲學習之獲取貓眼電影排名前10

2021-08-22 02:42:40 字數 2879 閱讀 1668

我們用正規表示式來完成這個任務,並把讀取到的內容寫入到文字中。

首先獲取該網頁的html**,注意千萬別用開發者模式檢視網頁的原始碼,原始碼可能和response.text不一樣

然後用python的第三方庫,requests庫進行網頁html的爬取

注意:1、在獲取源**之前我們要設定一下user-agent    2、如果獲取失敗要進行異常處理

**如下:

return none相應的主函式:

def main(url):

html = get_single_page(url)

print(html)

然後用python自帶的模組--re塊,進行正規表示式的寫入。

由於電影頁面等資訊都在標籤頁下,所以我們寫的正規表示式開頭加上,結尾加上。

正規表示式如下:

pattern = re.compile(

'.*?board-index.*?>(\d+)' #排名

+'.*?data-src="(.*?)".*?>'#

+'.*?title.*?>(.*?)'#電影名

+'.*?star.*?>(.*?)

'#主演

+'.*?releasetime.*?>(.*?)

'#上映時間

+'.*?integer.*?>(.*?)'#排名整數

+'.*?fraction.*?>(.*?).*?'#排名小數

,re.s

)

有了這些,我們直接用findall函式獲取的內容直接列印下來

response = re.findall(pattern,html)

print(response)

列印後我們發現內容很亂,應為findall函式返回的是乙個列表,所以我們通過yield進行分類:

for item in response:

yield

這樣輸出的結果就好看了好很多。

然後我們進行寫入檔案

def write_to_file(content):

with open('result.txt','a',encoding='utf-8') as f:#使用utf-8編碼格式

print(type(json.dumps(content)))

f.write(json.dumps(content,ensure_ascii=false)+'\n')#防止漢字輸入不正確從而變成亂碼,我們將ensure_ascii設定為false

這樣整個**就可以寫出來了,整體**如下:

import json

import requests

import requests.exceptions

import re

# 返回單頁的資訊

# 解析頁面,用正規表示式獲取想要的資訊,這裡注意的是,千萬別用開發者模式檢視網頁的原始碼,原始碼可能和response.text不同

def parse_one_page(html):

pattern = re.compile(

'.*?board-index.*?>(\d+)' #排名

+'.*?data-src="(.*?)".*?>'#

+'.*?title.*?>(.*?)'#電影名

+'.*?star.*?>(.*?)

'#主演

+'.*?releasetime.*?>(.*?)

'#上映時間

+'.*?integer.*?>(.*?)'#排名整數

+'.*?fraction.*?>(.*?).*?'#排名小數

,re.s

)response = re.findall(pattern,html)

for item in response:

yield

def write_to_file(content):

with open('result.txt','a',encoding='utf-8') as f:#使用utf-8編碼格式

print(type(json.dumps(content)))

f.write(json.dumps(content,ensure_ascii=false)+'\n')#防止漢字輸入不正確從而變成亂碼,我們將ensure_ascii設定為false

def main(url):

html = get_single_page(url)

print(html)

for it in parse_one_page(html):

write_to_file(it)

main('')

Python之爬蟲 貓眼電影

usr bin env python coding utf 8 import json import requests import re import time 貓眼多了反爬蟲,速度過快,則會無響應,所以這裡多了乙個延時等待 from requests.exceptions import requ...

爬蟲之獲取貓眼電影10W評論

哪吒之魔童降世 於是又上網查,終於看到一篇文章說到開發者模式可以直接切換到手機模式 切換開發者模式為手機模式 每條請求所對應的資料 movieid 表示電影id offset 表示偏移量 limit 一頁顯示多少資料 ts 當前時間戳 我們在上面的方法基礎上改變時間戳後發現也只能爬取1000條資料,...

python爬蟲實戰 貓眼電影案例

背景 抓包ajax非同步載入的網頁,載入資料的url需要通過抓包獲取。一般確認是否非同步載入,只需要右鍵開啟網頁源 如果原始碼文字內容與前端展示的結果不一致,則屬於非同步載入。這時需要按f12開啟開發者工具的network,重新重新整理網頁,就能看到真正的url。如下圖所示,開發者工具中紅色框的ur...