需要的庫:
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檔案獲取電影資訊
接下來直接上原始碼:
需要注意的一點是:豆瓣需要新增乙個包含user-agent欄位的請求import requests
from urllib.parse import urlencode
import json
import csv
import time
headers=
defget_page
(start)
: params=
url=
''+urlencode(params)
(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')
(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(
)
利用python分析郵件資料
最近在學習python程式設計,按照笨方法學python的方法一步一步抄 算是入了門。後來公司想讓我從海量郵件資料中提取出關鍵字段進行分析,主要是從郵件中統計關鍵字段來檢視使用者的分布。對一封郵件的關鍵字提取思路應該是比較簡單的,先把郵件拆分解析成可以進行正規表示式計算的字串形式,然後從郵件的正文中...
利用python做資料分析
3.2 資料分析的目的 主要就是為了在複雜 龐大的資料庫中提取對我們有用的資訊。讓這些資料產生一定的價值,幫助人們在日常生活中做一些決策時做一些參考。比如,在 中買東西,我們會首先看到物品的銷量 排行 以及顧客對物品的評價。這些都是經過資料分析得出來的。可見,資料分析在其中扮演著多麼重要的角色。3....
利用swig實現python呼叫C C 的方法
python是一門語法簡單而且清晰的指令碼語言,不過執行效率比較低。簡單的說就是開發相對c c 容易,但是執行效率不如c c 甚至有人稱之為執行效率最低的魚眼。如果可以將最重要的而且變化一般不大的運算邏輯用 c c 實現,其他用python書寫,那就最好不過了。據說python底層就是用c實現的,因...