两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

        我們在使用爬蟲的時候離不開URL地址和下載頁面,首先我們就來了解一下URL。它的語法格式一般為:

protocol :// hostname[:port] / path / [;parameters][?query]#fragment

        URL由三部分組成,第一部分是協(xié)議,有http、https、ftp等,第二部分存放資源的服務(wù)器的域名或IP地址,第三部分為資源的具體地址。

        我們在進行網(wǎng)絡(luò)請求的時候通常采用三種方式:urllib、urllib3和requests,下面我們就來介紹一下urllib和requests。

1. urllib模塊

        urllib是Python系統(tǒng)庫中存在的一個模塊,它提供了多個子模塊:

        1) urllib.request

        提供打開和閱讀URL的方法和類。

        2) urllib.error

        包含異常類。

        3) urllib.parse

        解析和引用URL。

        4) urllib.robotparser

        解析robots.txt文件。

        我們使用最多的是第一個子模塊中的方法,其中包含了對服務(wù)器請求的發(fā)出、跳轉(zhuǎn)、代理等。

        當我們向網(wǎng)頁發(fā)送請求的時候,采用urllib.request.urlopen()方法。

        例如:

import urllib.request#引入模塊
response = urllib.request.urlopen('http://www.baidu.com/')
html = response.read().decode('utf-8')#以utf-8格式讀取網(wǎng)頁的內(nèi)容
print(html)#輸出內(nèi)容

        輸出結(jié)果為網(wǎng)頁中的內(nèi)容(html格式):

 python爬蟲7

        它還包含data參數(shù),data參數(shù)主要是字節(jié)流編碼格式的內(nèi)容,即bytes類型,通過bytes()方法來進行轉(zhuǎn)換。

import urllib.parse
import urllib.request
data = bytes(urllib.parse.urlencode({'word': 'hello'}), encoding='utf8')
response = urllib.request.urlopen('http://httpbin.org/post', data=data)
print(response.read())

        這個例子傳遞了一個參數(shù)word,它的值為hello,它會被轉(zhuǎn)換為bytes類型,第二個參數(shù)為編碼格式,我們常選擇utf8。data參數(shù)有很多功能,這一點在后續(xù)會慢慢了解到。

        還可以通過timeout參數(shù)來設(shè)置超時時間,它是直接加在urlopen括號中其余不常用參數(shù)就不作過多介紹,有興趣的可以在Python官方文檔中進行查閱。https://docs.python.org/3/library/urllib.request.html。

2. requests模塊

        requests是一種第三方模塊,主要用于發(fā)送請求,它在使用的時候比urllib模塊要簡潔方便很多,我們可以在命令操作符里通過pip install requests來安裝,也可以在Pycharm中直接進行安裝。

 python爬蟲8

        我們可以通過requests模塊的get方法打印多種請求信息,代碼如下:

import requests
r = requests.get('https://www.douban.com/')
print(r.status_code)#輸出狀態(tài)碼
print(r.encoding)#輸出編碼格式
print(r.headers)#輸出頭部文件
print(r.cookies)#輸出cookie信息
print(r.content)#輸出字節(jié)流形式網(wǎng)頁源碼

        輸出結(jié)果如下:

418None{'Date': 'Wed, 19 Feb 2020 10:10:22 GMT', 'Content-Length': '0', 'Connection': 'keep-alive',
 'Keep-Alive': 'timeout=30', 'Server': 'dae'}<RequestsCookieJar[]>b''

        requests模塊也可以使用post、put、delete、hand等來發(fā)送請求,詳情可以參考:

        http://2.python-requests.org/zh_CN/latest/user/quickstart.html

3. 總結(jié)

        本節(jié)我們主要介紹了Python發(fā)送網(wǎng)絡(luò)請求的方式,在第一節(jié)介紹爬蟲流程的時候提到過,發(fā)送請求是爬蟲操作的關(guān)鍵步驟,但是我們在使用的時候會發(fā)現(xiàn),無論是如何發(fā)送請求都會被服務(wù)器拒絕,因此我們需要請求headers處理,下一節(jié)我們來學習請求headers處理。


點贊(2)

C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:

一點編程也不會寫的:零基礎(chǔ)C語言學練課程

解決困擾你多年的C語言疑難雜癥特性的C語言進階課程

從零到寫出一個爬蟲的Python編程課程

只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程

信息學奧賽或C++選手的 必學C++課程

藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程

手把手講解近五年真題的藍橋杯輔導(dǎo)課程

Dotcpp在線編譯      (登錄可減少運行等待時間)