python爬蟲(二):向網頁提交資料

來源:互聯網
上載者:User

標籤: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爬蟲(二):向網頁提交資料

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.