婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > python常用request庫與lxml庫操作方法整理總結

python常用request庫與lxml庫操作方法整理總結

熱門標簽:外呼并發線路 地圖標注審核表 百度地圖標注沒有了 長沙高頻外呼系統原理是什么 西藏房產智能外呼系統要多少錢 湛江智能外呼系統廠家 ai電話機器人哪里好 宿遷星美防封電銷卡 ai電銷機器人源碼

requests 庫最常見的操作

請求參數以及請求方法

導入 requests 庫之后,基本都在圍繞 requests.get 做文章,這里重點要回顧的是 get 方法的參數,其中包含如下內容,下述內容在官方手冊沒有呈現清單,通過最新版源碼分析。

除 url 參數外,其余都為可選參數,即非必選。

  • url:請求地址;
  • params:要發送的查詢字符串,可以為字典,列表,元組,字節;
  • data:body 對象中要傳遞的參數,可以為字段,列表,元組,字節或者文件對象;
  • json:JSON 序列化對象;
  • headers:請求頭,字典格式;
  • cookies:傳遞 cookie,字段或 CookieJar 類型;
  • files:最復雜的一個參數,一般出現在 POST 請求中,格式舉例 "name":文件對象 或者 {'name':文件對象},還可以在一個請求中發送多個文件,不過一般爬蟲場景不會用到;
  • auth:指定身份驗證機制;
  • timeout:服務器等待響應時間,在源碼中檢索到可以為元組類型,這個之前沒有使用過,即 (connect timeout, read timeout);
  • allow_redirects:是否允許重定向;
  • proxies:代理;
  • verify:SSL 驗證;
  • stream:流式請求,主要對接流式 API;
  • cert:證書。

以上內容就是 GET 請求中可以配置的參數,除了 GET 請求外,requests 還內置了其他的服務器請求方式,如下所示,這些方法需要的參數與上述清單一致。

GET, OPTIONS, HEAD, POST, PUT, PATCH, or DELETE

在 Python 爬蟲的實戰當中,主要以 GET 與 POST 為主,常用的參數為:

url,params,data,headers,cookies,timeout,proxies,verify。

響應對象的屬性與方法

使用 requests 庫請求之后,會得到一個 Response 對象,該對象最重要的內容就是屬性與方法,通過 dir 函數可以獲取 Response 對象的屬性和方法。

    help(res)
    print(dir(res))

獲取到的內容如下所示,其中有我們之前案例中常見的一些內容。

['__attrs__', '__bool__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__',
'__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__getstate__',
'__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__',
'__module__', '__ne__', '__new__', '__nonzero__', '__reduce__', '__reduce_ex__', '__repr__',
'__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__',
'_content', '_content_consumed', '_next', 'apparent_encoding', 'close', 'connection',
'content', 'cookies', 'elapsed', 'encoding', 'headers', 'history', 'is_permanent_redirect',
'is_redirect', 'iter_content', 'iter_lines', 'json', 'links', 'next', 'ok', 'raise_for_status',
'raw', 'reason', 'request', 'status_code', 'text', 'url']

如果只將 requests 庫應用在爬蟲采集領域,那上述屬性與方法中,比較常用的有:

屬性 property

  • ok:只要狀態碼 status_code 小于 400,都會返回 True;
  • is_redirect:重定向屬性;
  • content:響應內容,字節類型;
  • text:響應內容,Unicode 類型;
  • status_code:響應狀態碼;
  • url:響應的最終 URL 位置;
  • encoding:當訪問 r.text 時的編碼;

方法

  • json:將響應結果序列化為 JSON;

會話對象

在本專欄前面的文章中,存在一個被忽略的 requests 高級特性,即會話對象

該對象能夠在跨域請求的時候,保持住某些參數,尤其是 cookie

如果你想向同一主機發送多個請求,使用會話對象可以將底層的 TCP 連接進行重用,帶來顯著的性能提升。

  • 會話對象使用非常簡單,在發起 requests 對象之前,增加如下所示代碼即可。
# 建立會話對象
s = requests.Session()
# 后續都使用會話對象進行進行,而不是直接使用 requests 對象
s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get("http://httpbin.org/cookies")
print(r.text)

由于專欄前面并未涉及相關案例,故直接引入官方手冊案例說明。

  • 下述代碼演示的是會話也可用來為請求方法提供缺省數據,顧名思義就是直接給會話對象增加的請求參數,在后續代碼中默認可用。
import requests
s = requests.Session()
s.auth = ('user', 'pass')
s.headers.update({'x-test': 'true'})
# both 'x-test' and 'x-test2' are sent
r = s.get('http://httpbin.org/headers', headers={'x-test2': 'true'})
print(r.text)

接下來官網案例還展示了 法級別的參數也不會被跨請求保持,即在 s.get() 方法中如果傳遞了 cookie,那不會被保持住,這兩個案例,從正面與反面為我們核心展示的就是,如何使用會話對象保持參數

  • 通過會話對象的屬性設置的參數,能被保持,
  • 而通過會話對象方法傳遞的參數,不能被保持。

SSL 證書驗證,客戶端證書,CA 證書

在爬蟲采集數據的過程中,碰到 https 的網站在正常不過,requests 庫使用過程中 SSL 驗證是默認開啟的,如果證書驗證失敗,即拋出 SSLError錯誤。

不過更多的時候,我們通過設置 verify = False ,忽略對 SSL 證書的驗證,除非及其特殊的情況,必須增加相關證書邏輯。

代理

有的網站在采集過程中,會針對 IP 進行限制,此時就需要使用代理進行跳過操作,設置 proxies 參數即可,本部分內容比較簡單,后續很多案例還會復用到。

除了 HTTP 代理外, requests 2.10 版本之后,增加了 SOCKS 代理,如果你需要使用,需要通過 pip 安裝相應庫。

pip install requests[socks]

安裝完畢,出現新的第三方庫 PySocks,使用方式與 HTTP 代理一致。

Cookie

爬蟲采集過程會大量的與 cookie 打交道,

獲取網站響應的 cookie,使用 response 對象的 cookies 屬性即可。

  • 如果希望向服務器傳遞 cookie,可以通過 cookies 參數,例如下述代碼:
url = 'http://httpbin.org/cookies'
cookies = dict(cookies_are='working')
r = requests.get(url, cookies=cookies)
  • 如果你希望對 cookie 有更加細致的操作,重點研究 requests.cookies.RequestsCookieJar 對象即可,簡單的代碼使用如下所示:
jar = requests.cookies.RequestsCookieJar()
jar.set('tasty_cookie', 'yum', domain='httpbin.org', path='/cookies')
jar.set('gross_cookie', 'blech', domain='httpbin.org', path='/elsewhere')
url = 'http://httpbin.org/cookies'
r = requests.get(url, cookies=jar)
print(r.text)

RequestsCookieJar 對象具備更加豐富的接口,適合跨域名跨路徑使用,相關接口查詢:

https://docs.python-requests.org/zh_CN/latest/api.html#requests.cookies.RequestsCookieJar

requests 非常適合作為 Python 爬蟲入門階段第一選擇,其簡單的接口與代碼封裝

  • 能大幅度降低網絡請求代碼編寫難度,讓你專注與目標數據的提取,
  • 更有基于高級請求的封裝作為提高部分,該庫完全可以貫穿你的整個爬蟲工程師生涯。

lxml 庫

lxml 庫是一款 Python 數據解析庫,參考重要文檔在 https://lxml.de/,項目開源地址在:https://github.com/lxml/lxml,在一頓檢索之后,發現 lxml 沒有中文相關手冊,不過好在英文文檔閱讀難度不大,我們可以直接進行學習。

lxml.etree

縱覽之前的博客內容,出場率最高的就是 lxml.etree ,其次就是 Element 對象,我們在解析數據的時候,大量的代碼都是基于 Element 對象的 API 實現。

  • 在爬蟲代碼采集過程中,通過 etree.HTML 直接將字符串實例化為 element 對象。
import requests
from lxml import etree

res = requests.get("http://www.jsons.cn/zt/")

html = res.text

root_element = etree.HTML(html)

print(root_element)
print(root_element.tag)

上述代碼輸出內容如下所示:

Element html at 0x3310508>
html

  • 其中需要注意的是 Element 后面的 html,該字符串表示對象的標簽名為 html,如果使用下述代碼:
print(root_element[1])
  • 上述內容得到的是 Element body at 0x356e248>,即 body 標簽,同樣的操作可以使用子元素獲取。
print("*"*100)
for child in root_element:
    print(child.tag)

上述代碼輸出的內容為:

head
body

該輸出表示在 html 標簽中,只包含head 與 body 標簽,實際情況也確實如此,為了驗證,你可以在 循環中繼續嵌套一層。

此時輸出的內容就變得豐富了需求,如下圖所示:

你也可以通過 etree.tostring(element對象) 直接將該對象轉換為字符串進行輸出。

for child in root_element:
    for item in child:
        print(item.tag)
        print(etree.tostring(item))

XPath

lxml 庫可以配合其他的解析引擎進行工作,首次接觸的就是 XPath,關于 XPath 相關的知識,我們后續會細化學習,本節課依舊從 lxml 的角度出發,為你介紹。

在爬蟲代碼編寫中,直接使用 html.xpath("xpath表達式") 即可獲取目標數據,例如獲取網頁 title。

print(root_element.xpath('//title'))

獲取網頁所有文本:

print(root_element.xpath('string()'))

獲取到 element 對象之后,可調用 text 屬性,獲取對應文本,在使用的時候,需要注意使用 XPath 獲取到的 element 對象,都是列表。

title_element = root_element.xpath('//title')
print(title_element[0].text)

在 lxml 中,還內置了一款 簡單的類似 XPath 的路徑語言,稱為 ElementPath,例如查詢 title,需要從 head 開始檢索,否則返回 None。

print(root_element[0].find("title"))

官方提供的方法如下:

  • iterfind(): 返回查找到的數據,迭代器形式返回;
  • findall(): 返回匹配到的列表;
  • find(): 返回第一個匹配到的數據;
  • findtext(): 返回匹配到的文本數據,第一個。

lxml 其他說明

lxml 除了可以配合 XPath 實現數據解析外,還可以與 cssselect ,BeautifulSoup,html5lib 配合使用,這部分在后續的案例中,將逐步進行展開。

lxml 在爬蟲領域,更多的是在提取數據,因此較于該庫本身,掌握 XPath 等解析表達式的寫法更加重要。

鑒于該庫手冊沒有被翻譯,后期可以嘗試將其翻譯為中文。

到此這篇關于總結python常用request庫與lxml庫常用操作的文章就介紹到這了,更多相關python中request庫與lxml庫內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python中requests庫+xpath+lxml簡單使用
  • Python使用lxml模塊和Requests模塊抓取HTML頁面的教程
  • requests和lxml實現爬蟲的方法
  • Python爬蟲基礎之XPath語法與lxml庫的用法詳解
  • Python lxml模塊安裝教程

標簽:海南 漯河 盤錦 寧夏 南平 林芝 大同 普洱

巨人網絡通訊聲明:本文標題《python常用request庫與lxml庫操作方法整理總結》,本文關鍵詞  python,常用,request,庫與,lxml,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python常用request庫與lxml庫操作方法整理總結》相關的同類信息!
  • 本頁收集關于python常用request庫與lxml庫操作方法整理總結的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美国产欧美亚州国产日韩mv天天看完整 | 色久优优欧美色久优优| 中文字幕一区二区在线播放| 在线不卡中文字幕播放| 国产精品视频麻豆| 久草在线在线精品观看| 色狠狠色狠狠综合| 欧美精选在线播放| 亚洲三级久久久| 国产欧美日韩三区| 91首页免费视频| 一区二区成人在线| 国产午夜精品久久久久久免费视| 欧美一级片在线观看| 国产在线精品国自产拍免费| 大白屁股一区二区视频| 91视频免费播放| 久久66热偷产精品| 一本大道av一区二区在线播放| 精品久久久久香蕉网| 一区在线观看视频| 日韩欧美另类在线| 4438x亚洲最大成人网| 欧美三级三级三级爽爽爽| 亚洲国产精品人人做人人爽| 国产传媒久久文化传媒| 日韩精品一区二区三区视频播放| 国产精品久久久爽爽爽麻豆色哟哟| 99re6这里只有精品视频在线观看| 亚洲精品视频免费观看| 欧美日韩中文字幕一区| 亚洲欧美视频在线观看视频| 欧美一区中文字幕| 亚洲欧美色一区| 91精品欧美一区二区三区综合在| 国产精品自拍三区| 亚洲一区二区精品视频| 在线播放中文一区| 成人av小说网| 精品一区二区综合| 亚洲黄色小说网站| 欧美国产1区2区| 精品日韩在线一区| 91色九色蝌蚪| 成人在线一区二区三区| 免费看欧美美女黄的网站| 亚洲精品精品亚洲| 国产日韩欧美不卡| 日韩一区二区三免费高清| 91福利视频网站| 日本亚洲视频在线| 亚洲欧洲中文日韩久久av乱码| 日韩视频在线一区二区| 日本精品视频一区二区三区| 激情综合亚洲精品| 国产精品毛片久久久久久久| 欧美一区二区三区不卡| 欧美亚洲愉拍一区二区| 国产sm精品调教视频网站| 蜜桃视频一区二区| 亚洲bdsm女犯bdsm网站| 亚洲精品免费播放| 一区二区三区日韩欧美| 欧美精品一区二区三区很污很色的| 91啦中文在线观看| 99久久久无码国产精品| 成人手机电影网| 成人av午夜影院| 日本亚洲天堂网| 日韩伦理免费电影| 中文字幕中文字幕一区| 国产精品美女久久福利网站| 国产精品情趣视频| 国产精品高潮久久久久无| 国产午夜亚洲精品午夜鲁丝片| 精品卡一卡二卡三卡四在线| 精品国产乱码久久久久久图片| 精品国产凹凸成av人导航| 欧美电影免费观看高清完整版在线 | 欧美日韩在线不卡| 91在线视频在线| 欧美亚日韩国产aⅴ精品中极品| 欧美三区免费完整视频在线观看| 欧美日韩国产成人在线免费| 欧美一区永久视频免费观看| 欧美精品一区二区三区在线| 国产精品亲子伦对白| 综合分类小说区另类春色亚洲小说欧美| 最新国产精品久久精品| 亚洲韩国一区二区三区| 久久久久久夜精品精品免费| 中文字幕一区二区三区精华液 | 日韩一区二区三| 日韩在线播放一区二区| 欧美性一级生活| 亚洲精品一卡二卡| 国产91丝袜在线18| 国产午夜精品一区二区| 懂色av一区二区三区免费看| 久久久久久综合| 成人avav影音| 久久先锋资源网| 粉嫩一区二区三区性色av| 国产欧美视频一区二区| 国产成人av一区| 国产精品人人做人人爽人人添| 99国产精品久久久久| 亚洲婷婷国产精品电影人久久| 91在线视频在线| 亚洲成人1区2区| 日韩欧美精品在线视频| 国产精品综合二区| 综合激情成人伊人| 欧美三级韩国三级日本三斤| 一个色综合网站| 色综合色狠狠综合色| 久久综合成人精品亚洲另类欧美| 精品一区二区三区不卡| 国产欧美综合在线观看第十页 | 精品国产一区二区三区av性色| 久久97超碰色| 欧美国产97人人爽人人喊| 欧洲激情一区二区| 蜜桃久久精品一区二区| 中文字幕乱码久久午夜不卡 | 男男gaygay亚洲| 热久久久久久久| 成人午夜视频在线| 日韩电影在线免费观看| 亚洲日穴在线视频| 一区二区三区产品免费精品久久75| 久久免费美女视频| 亚洲日本一区二区三区| 99久久99精品久久久久久| 国产精品一区二区久久精品爱涩| 欧美色精品天天在线观看视频| 日本不卡高清视频| 国产亚洲美州欧州综合国| 在线看一区二区| 免费一级欧美片在线观看| 久久综合久久综合九色| 国产乱理伦片在线观看夜一区| 亚洲天天做日日做天天谢日日欢| 日韩欧美在线观看一区二区三区| 不卡电影一区二区三区| 午夜免费欧美电影| 亚洲国产高清不卡| 日韩一区二区视频| 色综合中文字幕国产 | 国产中文字幕一区| 国产精品美女视频| 欧美精品在线一区二区| 天天色 色综合| 日韩欧美国产一二三区| www.欧美日韩| 黄网站免费久久| 一区二区三区四区中文字幕| 91精品国产欧美一区二区18| 97aⅴ精品视频一二三区| 久久99国产精品成人| 一级做a爱片久久| 国产婷婷色一区二区三区四区 | 色综合激情久久| 日本特黄久久久高潮| 一区二区不卡在线播放| 亚洲精品中文在线影院| 精品福利一区二区三区免费视频| 欧美日韩视频在线第一区| av电影天堂一区二区在线观看| 亚洲va国产天堂va久久en| 欧美视频在线播放| 国产一区二区三区四区五区入口| 一卡二卡欧美日韩| 亚洲精品视频一区| 亚洲激情自拍视频| 亚洲女人****多毛耸耸8| 亚洲视频一区二区在线观看| 中文字幕一区免费在线观看| 91麻豆精品国产91久久久资源速度 | 中文字幕欧美区| 欧美日韩精品一区二区三区| 国产一区二区三区四区五区美女 | 天天操天天色综合| 欧美日韩一本到| 欧美最新大片在线看| 日韩一区二区三区免费观看| 日韩欧美中文一区二区| 亚洲高清视频的网址| 日韩av成人高清| www.66久久| 成人永久aaa| 不卡一卡二卡三乱码免费网站| 国产精品美女久久久久久久网站| 欧美久久久久久久久中文字幕| 风间由美中文字幕在线看视频国产欧美| 天天免费综合色| 欧美精品一区二区高清在线观看| 成人伦理片在线| 2022国产精品视频| 欧美在线一区二区三区|