爬蟲專欄9 ajax爬取豆瓣

2021-10-05 19:21:02 字數 2024 閱讀 7227

先定位到他的json資料頁面

不同的是他多出了param引數

補上就行,和json差別不大

同時,有些ajax進入後是網頁原始碼,所以需要重新利用正則或者lxml對網頁資訊進行提取,提取方法是一樣的

#這個和json動態載入時類似的,但是這個可以利用json也可以利用ajax的param引數進行抓取

import requests

import time

from fake_useragent import useragent

class

doubanspider

(object):

def__init__

(self)

: self.base_url =

'' self.i =

0def

get_html

(self, params)

: headers =

#因為有了param引數讓他得以定位

res = requests.get(url=self.base_url, params=params, headers=headers)

res.encoding =

'utf-8'

html = res.json(

)# 將json格式的字串轉為python資料型別

self.parse_html(html)

# 直接呼叫解析函式

defparse_html

(self, html)

:# html: [,,{}]

item =

for one in html:

item[

'name'

]= one[

'title'

]# 電影名

item[

'score'

]= one[

'score'

]# 評分

item[

'time'

]= one[

'release_date'

]# 列印測試

# 列印顯示

print

(item)

self.i +=

1# 獲取電影總數

defget_total

(self, typ)

:# 非同步動態載入的資料 都可以在xhr資料抓包

url =

''.format

(typ)

ua = useragent(

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

).json(

) total = html[

'total'

]return total

defmain

(self)

: typ =

'劇情'

typ_dict =

typ = typ_dict[typ]

total = self.get_total(typ)

# 獲取該型別電影總數量

for page in

range(0

,int

(total),20

):params =

self.get_html(params)

time.sleep(1)

print

('爬取的電影的數量:'

, self.i)

if __name__ ==

'__main__'

: spider = doubanspider(

) spider.main(

)

爬蟲 豆瓣電影爬取案例

直接上 僅供參考。目標爬取資料是某地區的 正在上映 部分的資料,如下圖 完整 如下 usr bin python coding utf 8 from lxml import etree import requests 目標 爬取豆瓣深圳地區的 正在上映 部分的資料 注意點 1 如果網頁採用的編碼方式...

Python爬蟲 爬取豆瓣電影(二)

檢視上乙個專案,請看 上乙個專案中獲取到了一定數量的電影url資訊,這次來獲取單個電影的電影詳情。對傳遞的url返回乙個名為soup的beautifulsoup物件 defget url html soup url header request body.get header proxies req...

python爬蟲爬取豆瓣電影資訊

我們準備使用python的requests和lxml庫,直接安裝完之後開始操作 目標爬取肖申克救贖資訊 傳送門 導入庫import requests from lxml import etree 給出鏈結 url 獲取網頁html前端 一行搞定,在requests中已經封裝好了 data reque...