網絡爬蟲——Requests,GET和POST

2020-12-25 胡桃HZ

一、Requests庫簡介

Requests模塊是發起http請求最常見的模塊。Requests自稱「http for Humans」,說明使用更簡潔方便。

Requests繼承了urllib的所有特性,Requests支持http連結保持和連接池,支持使用cookie保持會話,支持文件上傳,支持自動確定響應內容的編碼,支持國際化的url和post數據自動編碼。

Requests的底層實現其實就是urllib3.

開源地址:http://github.com/kennethreitz/requests

中文文檔API:http://2.python-requests.org/zh_CN/latest/

安裝方式:

pip install requests

二、Requests模塊get請求

(一)、網絡請求

當客戶端發送一個請求,伺服器收到這個請求後就會將請求所對應的響應返回給客戶端,客戶端收到這個響應將其顯示出來,我們使用requests模塊其實就是在模仿哭護短和伺服器的這個過程。

客戶端在發送請求時主要有兩種請求的方法:get請求和post請求。

1、get請求:

get請求主要是從伺服器去獲取內容,大多輸的請求都是get請求。

2、post請求:

post請求是向伺服器提交一些內容,比如表單等。

(二)、使用requests發送get請求

1、導入requests模塊

import requests

2、發送請求,獲取響應

response=requests.get(

url=請求的url

headers=請求頭字典

params=請求參數字典

)

(三)、response對象的屬性

1、字符串響應的內容

response.text

2、二進位響應的內容

response.content

3、json響應的內容

response.json()

4、響應狀態碼

response.status_code

5、響應頭

response.headers

6、頁面內容亂碼問題

1)、設置正確的編碼方式

給response.encoding設置一個正確的編碼,requests模塊會自動根據設置的編碼來將伺服器響應的內容按照這個編碼成字符串,這時我們通過response.text欄位就可以獲取正確的頁面內容了

2)、通過response.content.decode("正確的編碼")方法來將而簡直內容按照提供的編碼方式編碼成unicode字符串,進而正確的顯示。

三、requests模塊post請求

(一)、post請求的使用方法

1、導入requests模塊

import requests

2、發送請求,獲取響應

response=requests.post(

url=請求的url

headers=請求頭字典

data=請求數據字典

)

四、爬蟲和法律

(一)、爬蟲背後的法律風險

我們都知道在爬取網上數據時,爬取個人信息是不合法的。

《中華人民共和國網絡安全法》 2016 年 11 月 7 日發布的《中華人民共和國網絡安全法》明確「個人信息」是指以電子或 者其他方式記錄的能夠單獨或者與其他信息結合識別自然人個人身份的各種信息,包括但不限於自然人的姓名、出生日期、身份證件號碼、個人生物識別信息、住址、電話號碼等,就網絡服務中的個人信息保護問題作出系統規定如下:

1、保護個人信息: 網絡產品、服務具有收集用戶信息功能的,其提供者應當向用戶明示並取得同意;涉及 用戶個人信息的,還應當遵守本法和有關法律、行政法規關於個人信息保護的規定。

2、合法收集使用個人信息: 網絡運營者收集、使用個人信息,應當遵循合法、正當、必要的原則,公開收集、使用 規則,明示收集、使用信息的目的、方式和範圍,並經被收集者同意。不得收集與其提供的 服務無關的個人信息,不得違反法律、行政法規的規定和雙方的約定收集、使用個人信息, 並應當依照法律、行政法規的規定和與用戶的約定,處理其保存的個人信息。

3、不得向他人提供個人信息: 網絡運營者不得洩露、篡改、毀損其收集的個人信息,未經被收集者同意,不得向他人 提供個人信息,但經過處理無法識別特定個人且不能復原的除外。

《規範網際網路信息服務市場秩序若干規定》

1、搜集須經許可:未經用戶同意,不得搜集與用戶相關、能夠單獨或者與其他信息結 合識別用戶的信息(「用戶個人信息」),但法律法規另有規定除外;

2、限定搜集範圍和用途:經用戶同意搜集用戶個人信息的,應當明確告知搜集和處理 用戶個人信息的方式、內容和用途,不得收集其提供服務所必需以外的信息,不得將用戶個 人信息用於其提供服務之外的目的;

3、用戶個人信息保障:網際網路信息服務提供者應當加強系統安全防護,妥善保管用戶 個人信息,未經用戶同意,不得向他人提供用戶上載信息,但是法律法規另有規定的除外。

(二)、爬蟲怎麼做比較好

1、如果爬蟲獲取信息,是為了證明被爬公司的數據造假,其獲取的數據也都是通過公開渠道可以查詢的,那麼,在獲取信息後公布於眾的行為並不違法,也不侵犯被爬公司的民事權益。但是,如果你爬取公開免費的信息,是用來進行違法操作,比如造假、誹謗等,就有隱患了。

2、如果你利用爬蟲獲取其他公司的公開信息數據,用於自身公司的經營。而被爬公司 的信息是投入了大量人力、財力,經過常年積累獲得的,並且被爬公司本身也採取了反爬措 施。這種情況下,雖然信息是公開的,但信息本身具有較高的商業價值,能夠給使用者帶來 商業利益,此時的爬蟲也是違法的。

3、如果你未經平臺授權,強行突破反爬措施,導致被爬網站的運行受到嚴重影響,這 種行為明顯是違法的。

4、如果你是第三方應用,想要通過開放平臺獲取用戶信息時,更要注意授權問題。從 用戶對平臺的授權、平臺對第三方的授權、再到用戶對第三方的授權,三重關卡都要通過才合法。

相關焦點

  • 爬蟲必備 | Requests的基本用法
    12<RequestsCookieJar[]>132.各種請求方式1import requests23requests.get( http://httpbin.org/get ) 4requests.post( http://httpbin.org/post ) 5requests.put
  • Python爬蟲利器一之Requests庫的用法
    註:Python 版本依然基於 2.7前言之前我們用了 urllib 庫,這個作為入門的工具還是不錯的,對了解一些爬蟲的基本理念,掌握爬蟲爬取的流程有所幫助。入門之後,我們就需要學習一些更加高級的內容和工具來方便我們的爬取。那麼這一節來簡單介紹一下 requests 庫的基本用法。
  • Python 爬蟲基礎入門篇——Requests模塊
    基本用法都很簡單:   r = requests.get('https://api.github.com/events')r = requests.post('http://httpbin.org/post', data = {'key':'value'})r = requests.put('http://httpbin.org
  • Python爬蟲--Requests 庫用法大全
    往期知識回顧:Python爬蟲基本原理12.奇怪知識(1) --Matlab爬蟲獲取王者榮耀英雄皮膚在了解完爬蟲相關的基礎知識以後,我們就可以嘗試去開發自己的爬蟲程序了。使用 requests 實現 POST 請求的代碼如下:import requestsdata = { 'id': '100', 'name': 'YOOAO'} r = requests.post("http://httpbin.org/post", data=data)print(r.text)
  • Python網絡爬蟲實戰(一)快速入門
    不管你是學習Java爬蟲還是Python爬蟲,都可以從中學到爬蟲的編碼思想。    我們編寫網絡爬蟲最主要的目的是爬取想要的數據,通過爬蟲去自動完成我們想在網站中做的一些事情。    從今天開始我會從基礎開始講解如何通過網絡爬蟲去完成你想要做的事。先來看一段簡單的代碼。
  • 網絡爬蟲違法?扯!繼續學習我的第一個爬蟲
    網絡爬蟲的約束除了上述Robots協議之外,我們使用網絡爬蟲的時候還要對自己進行約束:過於快速或者頻密的網絡爬蟲都會對伺服器產生巨大的壓力,網站可能封鎖你的IP,甚至採取進一步的法律行動。因此,你需要約束自己的網絡爬蟲行為,將請求的速度限定在一個合理的範圍之內。
  • 10個Python爬蟲入門實例
    常用方法之get方法實例,下面還有傳參實例# 第二個get方法實例import requests #先導入爬蟲的庫,不然調用不了爬蟲的函數response = requests.get("http://httpbin.org/get") #get方法print( response.status_code )
  • 10個python爬蟲入門實例教程
    1.爬取強大的BD頁面,列印頁面信息# 第一個爬蟲示例,爬取百度頁面import requests #導入爬蟲的庫,不然調用不了爬蟲的函數response = requests.get("http://www.baidu.com")  #生成一個response對象response.encoding = response.apparent_encoding
  • 網絡爬蟲(一)
    有朋自遠方來,不亦樂乎,並誠邀入群,以達相互學習和進步之美好心願。爬蟲是按照一定規則,自動地提取並保存網頁中信息的程序。通過向網站發起請求獲取資源,提取其中有用的信息。爬蟲在獲取信息、整理數據等方面應用廣泛。
  • 第 60 天:Python Requests 庫的基本使用
    之前我們用了 urllib 庫,這個作為入門的工具還是不錯的,對了解一些爬蟲的基本理念,掌握爬蟲爬取的流程有所幫助。入門之後,我們就需要學習一些更加高級的內容和工具來方便我們的爬取。那麼這一節來簡單介紹一下 requests 庫的基本用法。
  • 教你如何編寫第一個爬蟲
    因此,你需要約束自己的網絡爬蟲行為,將請求的速度限定在一個合理的範圍之內。爬取網站的時候需要限制自己的爬蟲,遵守Robots協議和約束網絡爬蟲程序的速度;在使用數據的時候必須遵守網站的智慧財產權。所以只要你合理利用就不會違法,爬蟲還是可以學的哦,畢竟爬蟲對數據分析真的非常有用,那麼爬蟲該怎麼學呢?今天來教大家編寫一個簡單的爬蟲!
  • requests-html:最簡單的爬蟲框架,看完你就會了
    很多朋友都聽說過Python的大名,而Python也擁有眾多的爬蟲框架,其中最簡單的莫過於requests-html了。它和著名的網絡請求庫requests是同一個作者,著重於XML數據提取,可以說是最簡單的爬蟲框架了。安裝requests-html安裝這個類庫非常簡單,直接通過pip就可以安裝了。
  • Python接口自動化-requests模塊之post請求
    模塊之get請求,介紹了requests模塊、get請求及響應結果詳解。以下,主要介紹requests模塊中的post請求的使用。    :return: :class:`Response <Response>` object    :rtype: requests.Response    """    return request('post', url, data=data, json=json, **kwargs)
  • 漫談Pyspider網絡爬蟲的實踐
    總之,很早之前,我就開始規劃著寫點關於網絡爬蟲方面的文章,介紹性質的,但更重要的是,計算機以及信息科學的實踐性,所以,以一個實幹者的角度來寫,更為合適一些。在這之前,還是有必要對一些概念性的詞彙做一下梳理和科普,至少,不會讓讀者覺得突兀或者一知半解的讀著流水帳式的文字。
  • 一小時入門 Python 3 網絡爬蟲
    作者:Jack-Cui,熱愛技術分享,活躍於 CSDN 和知乎,開設的《Python3網絡爬蟲入門》、《Python3機器學習》等專欄受到好評。 聲明:本文講解的實戰內容,均僅用於學習交流,請勿用於任何商業用途!
  • Python程式語言:使用網絡爬蟲獲取大學排名
    上一篇文章,和大家分享的是如何獲取信息標記的知識,這篇文章,小編要和大家分享的是使用Python網絡爬蟲技術來獲取大學排名!當我們想要了解大學排名時,如何在雜亂的網頁信息上,快速獲取我們想要的大學排名信息了!這裡就需要用到Python網絡爬蟲提取信息的技術了!大學排名的程序代碼如下:
  • 爬蟲入門到放棄01:什麼是爬蟲
    風險規避:講述如何編寫規範的爬蟲,如何避免數據風險。前言很多人包括我在內,剛開始聽到爬蟲的時候都會有一種朦朦朧朧、遙不可及的感覺。很多人覺得只有程式設計師才需要使用爬蟲,其實並不是。至少,Python處理文檔和爬蟲的能力是面向日常工作的。
  • Python3爬蟲之虎撲論壇步行街【requests、Beautiful Soup、MongoDB】
    https://bbs.hupu.com/bxj第一頁:https://bbs.hupu.com/bxj第二頁:https://bbs.hupu.com/bxj-2第三頁:https://bbs.hupu.com/bxj-3不難發現,每增加一頁,只需要添加 -頁數 參數即可,最後一頁是第 50 頁,因此可以利用 for 循環依次爬取,定義一個 get_pages
  • Python爬蟲: 《經濟研究》研究熱點和主題分析
    背景使用 Python 爬蟲的好處爬蟲,顧名思義,指我們沿著網絡抓取自己的獵物(數據)。使用這種方法,我們可以向網站發起請求,獲取資源後分析並提取有用數據。使用文本 IDE、vscode 編寫爬蟲代碼,requests 庫獲取網頁信息,deautifulsoup 庫和正則表達式 re 解析網頁,xlwt 寫入為 xls 格式。2)數據分析與可視化工具為 Jupyter Notebook,用 Pandas 庫進行數據處理,matplotlib 畫圖等。
  • 網絡爬蟲框架Scrapy詳解之Request
    介紹Request類是一個http請求的類,對於爬蟲而言是一個很重要的類同時也有一個子類FormRequest繼承於它,用於post請求。若需要POST請求,用FormRequest即可headers 請求頭信息,一般在settings中設置即可,也可在middlewares中設置body str類型,為請求體,一般不需要設置(get和post其實都可以通過body來傳遞參數,不過一般不用)cookies dict或list類型,請求的cookie dict方式(name和value的鍵值對)