標籤:python 爬蟲 非同步 資料
python爬蟲(二):向網頁提交資料
回憶一下,我們有的時候在看一些網站的時候,是否遇見過一些網站裡面的資訊開始顯示一部分,然後當我們把滑鼠滑輪向下拉動後,又顯示出一些資訊。這就是非同步載入。我的上一篇文章python爬蟲百度貼吧標題資料爬取的所有標題都是頁面已經載入好的。但是對於這種開始沒有載入好的資料我們應該如何爬取呢?
接下來我們先介紹下一些概念:
- 非同步載入:舉個簡單的例子就是說,假如老師判作業,有兩種情況,第一種就是無論哪個學生先寫完,都等待到所有的同學全部寫完,老師講所有的作業都收齊後開始判作業。第二種情況就是有一個同學寫完作業,老師就判一個。這樣可以節省一些時間,也不會影響進度。這裡的第二種方法就是非同步載入。
- Get方法是從伺服器上擷取資料
- Post是向伺服器傳送資料
- Get通過構造URL中的參數來實現功能
- Post是將資料放在header中提交資料
向網頁提交資料
- 核心方法:requests.post
- 核心步驟:構造表單-提交表單-擷取返回資訊
進入我們構建代碼環節首先 我們先來瀏覽下我們要爬取的網站:
我們現在來開啟Chrome的審查元素,如何所示
我們在網頁的原始碼中,我們可以發現,每個卡片對應的標題都存放在這種格式的代碼中。
<div class="card-title">Titomirov Vodka LLC</div>
OK,我們尋找到了規律,那麼我們就可以根據這個規律構建我們的程式:
title = re.findall(‘"card-title">(.*?)</div>‘,post_html.text,re.S)
以上代碼不明白什麼意思,可以觀看python爬蟲百度貼吧標題資料
那麼尋找標題我們寫完了,接下來進入我們的重點。
當我們向下滑動,並且滑動到底部的時候,會出現這種現象:
這就是在非同步載入資料,那麼我們如何擷取這些非同步載入瘦的資料呢?
使用我們的審查元素,點擊NetWork,:
現在所有的資料都是空的,這個時候我們向下滑動我們的滑鼠滾輪,這個時候你就會看見很多的資料,
在NetWork中點擊第一個name,我們會看見以下資訊:
現在我們來分析一下:
查看
Remote Address:50.18.112.181:443Request URL:https://www.crowdfunder.com/deals&template=false&random_seed=1Request Method:POSTStatus Code:200 OK
Request Method:POST這說明我們向網頁提交了資料
提交地址:https://www.crowdfunder.com/deals&template=false&random_seed=1
我們接下來分析提價資料,往下翻,找到:
form Dataentities_only:truepage:1
以上就是提交資訊,根據英文意思判斷 page就是我們的頁數。根據以上資訊 我們就可以構建我們的表單了:
#注意這裡的page後面跟的數字需要放到引號裡面。post_data = { ‘entities_only‘:‘true‘, ‘page‘:‘1‘}
提交此表單後,我們就可以擷取返回資訊,在返回資訊中應用Regex,提取我們感興趣餓的內容。
完整代碼如下:
#-*-coding:utf8-*-import requestsimport re# url = ‘https://www.crowdfunder.com/browse/deals‘url = ‘https://www.crowdfunder.com/deals&template=false‘post_data = { ‘entities_only‘:‘true‘, ‘page‘:‘1‘}# 提交並擷取返回資料post_html = requests.post(url,data=post_data)#對返回資料進行分析titles = re.findall(‘"card-title">(.*?)</div>‘,post_html.text,re.S)for title in titles: print title
當你將’page’:’1’,改為’page’:’2’ 將會得到不同的資料。
以上就是全部的內容,有什麼問題或者不足,歡迎提出來,我們繼續討論。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
python爬蟲(二):向網頁提交資料