結語
基本要求:爬取指點地點的肯德基餐廳資料
高階要求:1.能夠翻頁爬取
2.能夠爬取到本次搜尋所有的餐廳資料,也就是一直爬到最後乙個
# -*- codeing = utf-8 -*-
# @time: 2020/12/22 0:38
# @author: si
# @file: test_kfc.py
# @software: pycharm
import requests
import json
此處指定url,並在接收到獲得的所有資料後進行持久化儲存。
def
main()
:#1.指定url
url =
''list_data_all = getdata(url)
# print(list_data)
#6.持久化儲存
fp =
open
('./kfc.json'
,'w'
,encoding=
'utf-8'
) json.dump(list_data_all,fp=fp,ensure_ascii=
false
)print
('over'
)
ua偽裝
封裝data資料,此處可以改pageindex的值來調節頁數來達到在網頁中翻頁的目的。
請求url
獲取響應資料
通過抓包到的網頁編碼,分析出餐廳總數及當前餐廳序號,當序號到達總數時,中斷請求資料的迴圈。具體解釋在**後的備註裡。
def
getdata
(url)
:#2.ua偽裝
headers =
list_data_all =
city =
input
("請輸入想搜尋的城市"
) i =
0while
true
: i = i +
1#3.封裝data資料
data=
try:
#4.請求url
response = requests.post(url=url, data=data, headers=headers,
)# print(response)
except exception as excep:
print
(excep,
'111111'
)#用數字快速定位出錯位置
break
#5.獲取響應資料
list_data = response.json(
)try
: rowcount = list_data[
'table'][
0]['rowcount'
]#字典裡'table'標籤的值,是個列表,取列表第乙個元素,還是字典,取其中'rowcount'標籤的值
rownum= list_data[
'table1'][
-1][
'rownum'
]#-1 表示列表最後一位
if rowcount == rownum:
#據 f12 觀察,每個對餐廳搜尋的結果請求都會返回rowcount這個資料,也就是總餐廳數
break
#每個餐廳的字典裡都包括自己的序號,就是rownum
except exception as except2:
print
(except2,
'22222222'
)#用數字快速定位出錯位置
break
return list_data_all
if __name__ ==
"__main__"
:#當程式執行時
#呼叫函式
main(
)print
('爬取完畢'
)
CSS餐廳練習
元素選擇器 第1關plate 選中 plate 元素 第2關bento 選中 bento 元素 id選擇器 第3關 fancy 選中 id fancy 的元素 後代選擇器 選中 id fancy 祖先元素下的 pickle 後代元素 類選擇器 第6關.small 選中 class small 的元素...
python爬蟲 練習
目錄通用爬蟲 聚焦爬蟲 聚焦爬蟲是根據指定的需求抓取網路上指定的資料。例如 獲取豆瓣上電影的名稱和影評,而不是獲取整張頁面中所有的資料值。增量式爬蟲 通過爬蟲程式監測某 資料更新的情況,以便可以爬取到該 更新出的新資料。1 發起請求 使用http庫向目標站點發起請求,即傳送乙個request req...
python簡單爬蟲練習
開始學爬蟲了,記錄一下這兩天的瞎鼓搗 先從最簡單的來,指定乙個url,把整個網頁 抓下來,這裡就拿csdn的主頁實驗 coding utf 8 from urllib import request url html request.urlopen url 注意這裡要以utf 8編碼方式開啟 with...