python利用Ajax分析方法爬取豆瓣劇情片排行

2021-10-01 19:21:35 字數 2433 閱讀 3671

需要的庫:

requests

urllib.parse下的urlencode

json

csvtime

通過檢視network中的ajax請求的xhr檔案發現這條ajax請求包含的資訊如下:

可以看到,包含了前20條電影的所有資訊

當再次向下滑動時,會出現新的xhr檔案:

每個新的xhr檔案內包含了20條電影的相關資訊

對比每個xhr的請求url

第乙個:request url:

第二個:request url:

第三個:request url:

可以分析出每次滾動ajax請求的url不同在於查詢字串中的start引數不同,他們以20的倍數遞增

通過這樣就可以實現爬取xhr檔案獲取電影資訊

接下來直接上原始碼:

import requests

from urllib.parse import urlencode

import json

import csv

import time

headers=

defget_page

(start)

: params=

url=

''+urlencode(params)

print

(url)

try:

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

#爬取豆瓣需要加乙個包含user-agent欄位的請求頭

if res.status_code==

200:

return res.json(

)except requests.connectionerror:

return

none

#這裡獲取的res.json()是乙個大的列表,裡面儲存的是乙個個的字典

defget_one_film

(json0)

:for item in json0:

data=

d=#排名 rank=item[

'rank'

]#標題

title=item[

'title'

]#評分

score=item[

'rating'][

0]#型別 types=item[

'types'

]#主演

actor=item[

'actors'

] d[

'rank'

]=rank

d['title'

]=title

d['score'

]=score

d['types'

]=types

d['actor'

]=actor

#print(d,'\n')

print

(rank)

#儲存為json格式

with

open

('豆瓣劇情片排行.json'

,'a'

,encoding=

"utf-8"

)as f:

f.write(json.dumps(data,indent=

1,ensure_ascii=

false))

#儲存為csv格式

with

open

('豆瓣劇情排行榜.csv'

,'a'

,encoding=

"utf-8"

)as f:

fieldnames=

['rank'

,'title'

,'score'

,'types'

,'actor'

] writer=csv.dictwriter(f,fieldnames=fieldnames)

writer.writeheader(

) writer.writerow(d)

defmain()

:for i in

range(20

):start=

str(i*20)

json0=get_page(start)

get_one_film(json0)

time.sleep(

0.8)

main(

)

需要注意的一點是:豆瓣需要新增乙個包含user-agent欄位的請求

利用python分析郵件資料

最近在學習python程式設計,按照笨方法學python的方法一步一步抄 算是入了門。後來公司想讓我從海量郵件資料中提取出關鍵字段進行分析,主要是從郵件中統計關鍵字段來檢視使用者的分布。對一封郵件的關鍵字提取思路應該是比較簡單的,先把郵件拆分解析成可以進行正規表示式計算的字串形式,然後從郵件的正文中...

利用python做資料分析

3.2 資料分析的目的 主要就是為了在複雜 龐大的資料庫中提取對我們有用的資訊。讓這些資料產生一定的價值,幫助人們在日常生活中做一些決策時做一些參考。比如,在 中買東西,我們會首先看到物品的銷量 排行 以及顧客對物品的評價。這些都是經過資料分析得出來的。可見,資料分析在其中扮演著多麼重要的角色。3....

利用swig實現python呼叫C C 的方法

python是一門語法簡單而且清晰的指令碼語言,不過執行效率比較低。簡單的說就是開發相對c c 容易,但是執行效率不如c c 甚至有人稱之為執行效率最低的魚眼。如果可以將最重要的而且變化一般不大的運算邏輯用 c c 實現,其他用python書寫,那就最好不過了。據說python底層就是用c實現的,因...