嵩天python爬虫_我自己爬-python爬虫快速入门(一)
request庫
對于輕量級用戶,像我一樣只是準備寫一個搞笑用的程序,requests是很方便的存在。
安裝通過pip就不說了
request的幾個主要方法
requests.request() 構造一個請求,支撐以下各方法的基礎方法
requests.get() 獲取HTML網頁的主要方法,對應于HTTP的GET
requests.head() 獲取HTML網頁頭信息的方法,對應于HTTP的HEAD
requests.post() 向HTML網頁提交POST請求的方法,對應于HTTP的POST
requests.put() 向HTML網頁提交PUT請求的方法,對應于HTTP的PUT
requests.patch() 向HTML網頁提交局部修改請求,對應于HTTP的PATCH
requests.delete() 向HTML頁面提交刪除請求,對應于HTTP的DELETE
這個基本上和http中報文的幾種方法是一致的。
具體可以康康明解http的第三章。小錢錢夠的同學可以支持一下正版。
get方法
我們主要使用的是get方法(因為只是爬別人)。
requests.get(url, params=None, **kwargs)中。url(統一資源定位符)指訪問的資源的地址,就是你在瀏覽器上面那個欄欄里面輸入的http://www.xxxxxx.com。kwargs用來控制訪問的參數,也是用來控制你網絡通信中的參數(可以理解為一個信封的上收信人和郵票這些)。
我們使用get方法
url="https://bing.com/"
res=requests.get(url)
我們去爬去的時候,通過url使用get方法,是獲得一個request對象去訪問網址資源(響應庫名)。
而res是得到一個response對象,包含了幾個屬性
status_code HTTP請求的返回狀態,200表示連接成功,404表示失敗(詳細見明解http第四章)
text HTTP響應內容的字符串形式,即url對應的頁面內容
encoding 從HTTP header中猜測的響應內容編碼方式
apparent_encoding 從內容中分析出的響應內容編碼方式(備選編碼方式)
content HTTP響應內容的二進制形式
通常如果我們發現res.txt的顯示有些問題,我們會使用apparent_encoding去解碼結果。
因為畢竟有可能有失敗所以我們需要使用異常處理來打開。
url="https://bing.com/"
try:
res=requests.get(url)
res.raise_for_status()
res.encoding=res.apparent_encoding
print(res.text[:1000])
except:
print("spider failed")
幾個小實例
基本的爬取
更改agent的方式
有些網站并不想讓你爬所以會限制爬蟲(因為你太老實了,危),像這樣
就返回503了。
這個時候我們就可以動一下小手腳,我們把user-agent這個自報家門的東西換點(默認的參數自報是python爬蟲),我們改成一個瀏覽器的名字‘Mozilla/5.0’,騙一騙它。
這樣我們就繞開了這個小反爬。(僅供娛樂玩家使用,偶爾這么搞一搞)
訪問資源的子部分
比如我們像用搜索引擎查一查某個東西。哪怎么搞呢?
我們去必應搜索了一波‘抗疫感想’,發現它長這個樣子
那ok了,我們只需要把這串url里面的q=后面的換成我們想要的查就好。
還記得**args這個參數嗎? 我們往里面加點料,開一個字典search={'q': 'xxx'},到時候它request的時候便會幫我們把參數p=xxx搞到url上去。
關于什么能爬什么不能爬
一般很多網站會把什么能爬什么不能爬寫出來。搞一個robots協議公開給大家看。
我們只要在一個網站url后面加一個/robots.txt就能查看。User-agent: msnbot-media
Disallow: /
Allow: /th?
User-agent: Twitterbot
Disallow:
User-agent: *
Disallow: /account/
Disallow: /amp/
Allow: /api/maps/
取了一小部分,這里可以看到bing的/api/maps/是對所有爬蟲都開放的(allow了),而對/account/這一部分是不允許別人爬的。而對于Twitterbot,不讓爬。
總結
以上是生活随笔為你收集整理的嵩天python爬虫_我自己爬-python爬虫快速入门(一)的全部內容,希望文章能夠幫你解決所遇到的問題。