校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁(yè) > 知識(shí)庫(kù) > python爬蟲系列網(wǎng)絡(luò)請(qǐng)求案例詳解

python爬蟲系列網(wǎng)絡(luò)請(qǐng)求案例詳解

熱門標(biāo)簽:電話外呼系統(tǒng)招商代理 蘇州人工外呼系統(tǒng)軟件 電話機(jī)器人貸款詐騙 京華圖書館地圖標(biāo)注 看懂地圖標(biāo)注方法 淮安呼叫中心外呼系統(tǒng)如何 佛山通用400電話申請(qǐng) 廣東旅游地圖標(biāo)注 打印谷歌地圖標(biāo)注

學(xué)習(xí)了之前的基礎(chǔ)和爬蟲基礎(chǔ)之后,我們要開始學(xué)習(xí)網(wǎng)絡(luò)請(qǐng)求了。

先來(lái)看看urllib

urllib的介紹

urllib是Python自帶的標(biāo)準(zhǔn)庫(kù)中用于網(wǎng)絡(luò)請(qǐng)求的庫(kù),無(wú)需安裝,直接引用即可。
主要用來(lái)做爬蟲開發(fā),API數(shù)據(jù)獲取和測(cè)試中使用。

urllib庫(kù)的四大模塊:

  • urllib.request: 用于打開和讀取url
  • urllib.error : 包含提出的例外,urllib.request
  • urllib.parse:用于解析url
  • urllib.robotparser:用于解析robots.txt

案例

# 作者:互聯(lián)網(wǎng)老辛
# 開發(fā)時(shí)間:2021/4/5/0005 8:23
import urllib.parse
kw={'wd':"互聯(lián)網(wǎng)老辛"}
result=urllib.parse.urlencode(kw)
print(result)
#解碼
res=urllib.parse.unquote(result)
print(res)

瀏覽器中會(huì)把互聯(lián)網(wǎng)老辛,改成非中文的形式

我在瀏覽器中搜互聯(lián)網(wǎng)老辛,然后把瀏覽中的復(fù)制下來(lái):

https://www.baidu.com/s?ie=utf-8f=8rsv_bp=1rsv_idx=1tn=baiduwd=%E4%BA%92%E8%81%94%E7%BD%91%E8%80%81%E8%BE%9Bfenlei=256oq=%25E7%25BE%258E%25E5%259B%25A2rsv_pq=aa5b8079001eec3ersv_t=9ed1VMqcHzdaH7l2O1E8kMBcAS8OfSAGWHaXNgUYsfoVtGNbNVzHRatL1TUrqlang=cnrsv_enter=1rsv_dl=tbrsv_btype=tinputT=3542rsv_sug2=0rsv_sug4=3542

仔細(xì)看下,加粗的部分是不是就是我們?cè)诖a中輸出的wd的結(jié)果

發(fā)送請(qǐng)求

  •  urllib.request 庫(kù)

模擬瀏覽器發(fā)起一個(gè)http請(qǐng)求,并獲取請(qǐng)求的響應(yīng)結(jié)果

  • urllib.request.urlopen 的語(yǔ)法格式:

urlopen(url,data=None,[timeout]*,cafile=None,capath=None,cadefault=False,context=None

參數(shù)說(shuō)明:

url: str類型的地址,也就是要訪問(wèn)的URL,例如https://www/baidu.com
data: 默認(rèn)值為None
urlopen: 函數(shù)返回的是一個(gè)http.client.HTTPResponse對(duì)象

代碼案例

get請(qǐng)求

# 作者:互聯(lián)網(wǎng)老辛
# 開發(fā)時(shí)間:2021/4/5/0005 8:23
import urllib.request
url="http://www.geekyunwei.com/"
resp=urllib.request.urlopen(url)
html=resp.read().decode('utf-8')  #將bytes轉(zhuǎn)成utf-8類型
print(html)

為什么要改成utf-8而不是gbk, 這里要看網(wǎng)頁(yè)的檢查網(wǎng)頁(yè)源代碼里是什么:

發(fā)送請(qǐng)求-Request請(qǐng)求

我們?nèi)ヅ廊《拱?/p>

# 作者:互聯(lián)網(wǎng)老辛
# 開發(fā)時(shí)間:2021/4/5/0005 8:23
import urllib.request

url="https://movie.douban.com/"

resp=urllib.request.urlopen(url)
print(resp)

豆瓣有反爬蟲策略,會(huì)直接報(bào)418錯(cuò)誤


對(duì)于這種我們需要偽裝請(qǐng)求頭:

我們找到網(wǎng)頁(yè)中的user-Agent:

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400
# 作者:互聯(lián)網(wǎng)老辛
# 開發(fā)時(shí)間:2021/4/5/0005 8:23
import urllib.request

url="https://movie.douban.com/"
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400'}

#構(gòu)建請(qǐng)求對(duì)象
req=urllib.request.Request(url,headers=headers)
#使用urlopen打開請(qǐng)求
resp=urllib.request.urlopen(req)
#從響應(yīng)結(jié)果中讀取數(shù)據(jù)
html=resp.read().decode('utf-8')
print(html)

這樣我們就用Python成功的偽裝成瀏覽器獲取到了數(shù)據(jù)

IP代理

opener的使用,構(gòu)建自己的opener發(fā)送請(qǐng)求

# 作者:互聯(lián)網(wǎng)老辛
# 開發(fā)時(shí)間:2021/4/5/0005 8:23
import urllib.request
url="https://www.baidu.com/"
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400'}
#構(gòu)建請(qǐng)求對(duì)象

req=urllib.request.Request(url,headers=headers)

opener=urllib.request.build_opener()
resp=opener.open(req)
print(resp.read().decode())

如果你不停的發(fā)送請(qǐng)求,他有可能給你禁止IP, 所以我們每隔一段時(shí)間就換一個(gè)IP代理。

IP代理分類:

  • 透明代理: 目標(biāo)網(wǎng)站知道你使用了代理并且知道你的源IP地址,這種代理肯定不符合我們的初衷
  • 匿名代理: 網(wǎng)站知道你使用了代理,但不知道你的源ip
  • 高匿代理: 這是最保險(xiǎn)的方式,目錄網(wǎng)站不知道你使用了代理

ip代理的方式:

免費(fèi)的: https://www.xicidaili.com/nn/

收費(fèi)的: 大象代理,快代理,芝麻代理

# 作者:互聯(lián)網(wǎng)老辛
# 開發(fā)時(shí)間:2021/4/5/0005 8:23
from urllib.request import build_opener
from urllib.request import ProxyHandler
proxy=ProxyHandler({'https':'222.184.90.241:4278'})

opener=build_opener(proxy)

url='https://www.baidu.com/'
resp=opener.open(url)
print(resp.read().decode('utf-8'))

百度其實(shí)能夠做到反爬,即使是高匿代理也做不到百分百的繞過(guò)。

使用cookie

為什么使用cookie?

使用cookie主要是為了解決http的無(wú)狀態(tài)性。

使用步驟:

  • 實(shí)例化MozillaCookiejar(保存cookie)
  • 創(chuàng)建handler對(duì)象(cookie的處理器)
  • 創(chuàng)建opener對(duì)象
  • 打開網(wǎng)頁(yè)(發(fā)送請(qǐng)求獲取響應(yīng))
  • 保存cookie文件

案例: 獲取百度貼的cookie存儲(chǔ)下來(lái)

import urllib.request
from http import cookiejar
filename='cookie.txt'
def get_cookie():
    cookie=cookiejar.MozillaCookieJar(filename)
    #創(chuàng)建handler對(duì)象

    handler=urllib.request.HTTPCookieProcessor(cookie)
    opener=urllib.request.build_opener((handler))
    #請(qǐng)求網(wǎng)址
    url='https://tieba.baidu.com/f?kw=python3fr=index'

    resp=opener.open(url)
    # 保存cookie
    cookie.save()
#讀取數(shù)據(jù)
def use_cookie():
    #實(shí)例化MozillaCookieJar
    cookie=cookiejar.MozillaCookieJar()
    #加載cookie文件
    cookie.load(filename)
    print(cookie)
if __name__=='__main--':
    use_cookie()
    #get_cookie()

異常處理

我們爬取一個(gè)訪問(wèn)不了的網(wǎng)站來(lái)捕獲異常

# 作者:互聯(lián)網(wǎng)老辛
# 開發(fā)時(shí)間:2021/4/6/0006 7:38

import urllib.request
import urllib.error
url='https://www.google.com'
try:
    resp=urllib.request.urlopen(url)
except urllib.error.URLError as e:
    print(e.reason)

可以看到捕獲到了異常

網(wǎng)絡(luò)請(qǐng)求我們已經(jīng)學(xué)完了,后面我們將學(xué)習(xí)幾個(gè)常用的庫(kù),之后就可以進(jìn)行數(shù)據(jù)的爬取了。

到此這篇關(guān)于python爬蟲系列網(wǎng)絡(luò)請(qǐng)求案例詳解的文章就介紹到這了,更多相關(guān)python爬蟲網(wǎng)絡(luò)請(qǐng)求內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python爬蟲請(qǐng)求庫(kù)httpx和parsel解析庫(kù)的使用測(cè)評(píng)
  • 詳解python requests中的post請(qǐng)求的參數(shù)問(wèn)題
  • 快速一鍵生成Python爬蟲請(qǐng)求頭
  • Python3+Django get/post請(qǐng)求實(shí)現(xiàn)教程詳解
  • python 實(shí)現(xiàn)Requests發(fā)送帶cookies的請(qǐng)求
  • python實(shí)現(xiàn)三種隨機(jī)請(qǐng)求頭方式
  • Python urllib request模塊發(fā)送請(qǐng)求實(shí)現(xiàn)過(guò)程解析
  • python 爬蟲請(qǐng)求模塊requests詳解
  • Python Http請(qǐng)求json解析庫(kù)用法解析
  • python 發(fā)送get請(qǐng)求接口詳解
  • python+excel接口自動(dòng)化獲取token并作為請(qǐng)求參數(shù)進(jìn)行傳參操作
  • Python使用grequests并發(fā)發(fā)送請(qǐng)求的示例
  • Python爬蟲基礎(chǔ)講解之請(qǐng)求

標(biāo)簽:呼和浩特 衡水 畢節(jié) 股票 江蘇 駐馬店 湖州 中山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python爬蟲系列網(wǎng)絡(luò)請(qǐng)求案例詳解》,本文關(guān)鍵詞  python,爬蟲,系列,網(wǎng)絡(luò),請(qǐng)求,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python爬蟲系列網(wǎng)絡(luò)請(qǐng)求案例詳解》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于python爬蟲系列網(wǎng)絡(luò)請(qǐng)求案例詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 阳西县| 阿拉善左旗| 芷江| 自治县| 石狮市| 揭阳市| 从江县| 凌云县| 商都县| 新安县| 大埔县| 怀安县| 多伦县| 海宁市| 萍乡市| 厦门市| 赤峰市| 铁力市| 大名县| 札达县| 吉首市| 肇源县| 栖霞市| 浦城县| 汉阴县| 古交市| 夏河县| 启东市| 东阿县| 连平县| 宜都市| 沙雅县| 罗山县| 永宁县| 阿尔山市| 尼木县| 沂水县| 桦甸市| 日喀则市| 汨罗市| 弥渡县|