Python中Requests-get方法的使用
以https://books.toscrape.com/網(wǎng)站為例:
打開(kāi)網(wǎng)頁(yè)
先把網(wǎng)頁(yè)打開(kāi),然后右鍵檢查,找到網(wǎng)絡(luò)一欄,這個(gè)時(shí)候發(fā)現(xiàn)下面是空白,什么也沒(méi)有:
刷新一下就好了,刷新之后:
點(diǎn)擊第一個(gè)進(jìn)行查看:
可以看到請(qǐng)求方法是"GET"方法,請(qǐng)求的URL也可以看到。
頁(yè)面的最下方可以發(fā)現(xiàn)頁(yè)面不止一頁(yè),點(diǎn)擊到下一頁(yè)并且繼續(xù)檢查頁(yè)面:
現(xiàn)在使用相同的格式,輸入"https://books.toscrape.com/catalogue/page-1.html"進(jìn)行查看,發(fā)現(xiàn)回到了首頁(yè)。一般第一頁(yè)就是首頁(yè),所以后面的路徑也不會(huì)加上/catalogue/page-2.html,可以多看幾個(gè)頁(yè)面就會(huì)發(fā)現(xiàn)。
使用代碼獲取頁(yè)面內(nèi)容
headers = { "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36" }
首先要添加爬蟲(chóng)的頭部,因?yàn)楹芏囗?yè)面對(duì)爬蟲(chóng)具有反爬的限制,加上頭部之后可以模擬正常的瀏覽器請(qǐng)求,成功幾率更高。這一部分在要訪問(wèn)的頁(yè)面的請(qǐng)求頭部分:
url = "https://books.toscrape.com/catalogue/page-1.html"
這一部分聲明要訪問(wèn)的網(wǎng)址。
responce = requests.get(url,headers=headers).text
把這一部分拆解開(kāi):
requests.get(url,headers=headers):帶著相應(yīng)的請(qǐng)求頭、以GET方式、訪問(wèn)上面的URL。
requests.get(url,headers=headers).text:將上述內(nèi)容以文本的方式進(jìn)行返回。
responce = requests.get(url,headers=headers).text:將內(nèi)容返回給response這個(gè)變量。
查看結(jié)果
運(yùn)行之后顯示出了相應(yīng)頁(yè)面的內(nèi)容。但格式有點(diǎn)凌亂,可以使用某些方法進(jìn)行調(diào)整。
頁(yè)面格式修改
這個(gè)時(shí)候就要引出BeautifulSoup這個(gè)庫(kù)。BeautifulSoup是一個(gè)Python庫(kù),用于從HTML和XML文檔中提取數(shù)據(jù)。它提供了一種簡(jiǎn)單和靈活的方式來(lái)解析和遍歷這些文檔,使得提取特定信息變得更加方便。
soup = BeautifulSoup(responce,"html.parser")
這一步的意義是將獲取的網(wǎng)頁(yè)內(nèi)容(響應(yīng)文本)使用BeautifulSoup進(jìn)行解析,以便能夠方便地提取和操作其中的數(shù)據(jù)。如果沒(méi)有這一步,那么無(wú)法使用BeautifulSoup的功能來(lái)解析網(wǎng)頁(yè)內(nèi)容。在沒(méi)有進(jìn)行解析的情況下,你將只是得到一個(gè)純文本的響應(yīng)內(nèi)容,難以直接提取所需的特定數(shù)據(jù)。你將不得不手動(dòng)處理響應(yīng)內(nèi)容來(lái)查找、提取所需的信息,這是非常繁瑣和容易出錯(cuò)的。
現(xiàn)在進(jìn)行print(soup)會(huì)發(fā)現(xiàn)頁(yè)面格式簡(jiǎn)潔了很多。
語(yǔ)法解釋:
- response: 這是一個(gè)必需的參數(shù),表示要解析的文檔內(nèi)容。在這個(gè)例子中,response是通過(guò)發(fā)送HTTP請(qǐng)求獲取的網(wǎng)頁(yè)內(nèi)容,也就是服務(wù)器返回的響應(yīng)文本。它是一個(gè)字符串類型的變量,包含了HTML文檔的內(nèi)容。
- “html.parser”: 這是第二個(gè)參數(shù),它指定了使用的解析器。在這種情況下,使用的是Python內(nèi)置的HTML解析器,稱為"html.parser"。該解析器是BeautifulSoup庫(kù)的一個(gè)組成部分,可以將HTML文檔轉(zhuǎn)換為解析樹(shù),以便進(jìn)行進(jìn)一步的處理和提取。
其他可選的解析器還有"lxml"和"html5lib"。它們都是第三方庫(kù),具有不同的特性和性能。選擇合適的解析器取決于你的需求和環(huán)境。
綜上所述,BeautifulSoup(response, “html.parser”)中的兩個(gè)參數(shù)分別表示要解析的文檔內(nèi)容和使用的解析器類型。
爬取書(shū)名
使用爬蟲(chóng)肯定是對(duì)內(nèi)容進(jìn)行爬取,接下來(lái)對(duì)書(shū)名進(jìn)行爬取。
思路大概分為幾步:相應(yīng)頁(yè)面的URL、請(qǐng)求頭的配置、頁(yè)面內(nèi)容的查看、代碼參數(shù)的配置。
URL以及請(qǐng)求頭都已經(jīng)配置完畢了,接下來(lái)對(duì)頁(yè)面內(nèi)容進(jìn)行查看,查看書(shū)名的地方都有什么特點(diǎn):
可以發(fā)現(xiàn),外部都有一個(gè)h3,然后內(nèi)部被a標(biāo)簽給包圍住了,接下來(lái)看代碼:
soup = BeautifulSoup(responce,"html.parser") all_title = soup.findAll("h3")
對(duì)soup中的所有內(nèi)容進(jìn)行搜索,搜索其中包含在"h3"標(biāo)簽中的內(nèi)容,查看輸出:
可以發(fā)現(xiàn),確實(shí)輸出了"h3"標(biāo)簽中的內(nèi)容,但是其中的內(nèi)容并不是我們都想要的,接下來(lái)還要進(jìn)行過(guò)濾,看代碼:
all_title = soup.findAll("h3") for i in all_title: title = i.find("a") print(title)
現(xiàn)在對(duì)每一個(gè)"h3"標(biāo)簽中的內(nèi)容進(jìn)行遍歷,然后找到其中"a"標(biāo)簽中的內(nèi)容,查看輸出:
針對(duì)于"a"標(biāo)簽中的內(nèi)容,我們不想要html中的標(biāo)簽,只想要html中的文本,所以繼續(xù)加參數(shù),看代碼:
all_title = soup.findAll("h3") for i in all_title: title = i.find("a") print(title.string)
這里對(duì)于最后的print進(jìn)行了限制,輸出title的string類型,也就是只要其中的文本類型,查看輸出:
可以發(fā)現(xiàn),只輸出了書(shū)名,這個(gè)效果也正是我們想要的。
完整代碼以及注釋
代碼
from bs4 import BeautifulSoup import requests headers = { "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36" }#請(qǐng)求頭改成自己的 url = "https://books.toscrape.com/catalogue/page-1.html" responce = requests.get(url,headers=headers).text soup = BeautifulSoup(responce,"html.parser") all_title = soup.findAll("h3") for i in all_title: title = i.find("a") print(title.string)
注釋
from bs4 import BeautifulSoup
: 導(dǎo)入BeautifulSoup庫(kù),這是為了使用其中的解析和提取功能。import requests
: 導(dǎo)入requests庫(kù),這是為了發(fā)送HTTP請(qǐng)求獲取網(wǎng)頁(yè)內(nèi)容。headers = {...}
: 定義了一個(gè)字典類型的變量headers
,其中包含了請(qǐng)求頭信息。這個(gè)請(qǐng)求頭信息中設(shè)置了User-Agent字段,模擬瀏覽器發(fā)送請(qǐng)求。url = "https://books.toscrape.com/catalogue/page-1.html"
: 定義了要爬取的目標(biāo)網(wǎng)頁(yè)的URL地址。response = requests.get(url, headers=headers).text
: 發(fā)送HTTP GET請(qǐng)求到指定的URL,并獲取響應(yīng)對(duì)象。.text
將響應(yīng)內(nèi)容以文本形式返回。將獲取到的響應(yīng)文本賦值給response
變量。soup = BeautifulSoup(response, "html.parser")
: 使用BeautifulSoup庫(kù)將獲取到的響應(yīng)文本進(jìn)行解析,創(chuàng)建一個(gè)BeautifulSoup對(duì)象。傳入?yún)?shù)response
作為要解析的文檔內(nèi)容,以及解析器類型"html.parser"。all_title = soup.findAll("h3")
: 使用BeautifulSoup對(duì)象的findAll
方法,查找所有<h3>
標(biāo)簽,并將結(jié)果存儲(chǔ)在變量all_title
中。findAll
返回一個(gè)列表,其中包含了所有匹配的標(biāo)簽。for i in all_title:
: 對(duì)于all_title
列表中的每個(gè)元素進(jìn)行迭代。title = i.find("a")
: 在當(dāng)前迭代的<h3>
標(biāo)簽中,使用find
方法查找第一個(gè)<a>
標(biāo)簽,并將結(jié)果存儲(chǔ)在變量title
中。print(title.string)
: 打印title
標(biāo)簽的文本內(nèi)容,即書(shū)籍的標(biāo)題。使用.string
獲取標(biāo)簽內(nèi)的文本。
這段代碼的作用是從指定的網(wǎng)頁(yè)中爬取書(shū)籍標(biāo)題信息,并將其打印出來(lái)。它使用requests庫(kù)發(fā)送HTTP請(qǐng)求獲取網(wǎng)頁(yè)內(nèi)容,然后使用BeautifulSoup庫(kù)解析網(wǎng)頁(yè)并提取所需信息。最后通過(guò)循環(huán)打印出每個(gè)書(shū)籍的標(biāo)題。
翻頁(yè)查詢所有
放到下一篇詳細(xì)進(jìn)行介紹。
到此這篇關(guān)于Python中Requests-get方法的使用的文章就介紹到這了,更多相關(guān)Python Requests-get內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- requests.gPython?用requests.get獲取網(wǎng)頁(yè)內(nèi)容為空?’?’問(wèn)題
- Python接口自動(dòng)化之淺析requests模塊get請(qǐng)求
- python requests.get帶header
- python爬蟲(chóng) 基于requests模塊的get請(qǐng)求實(shí)現(xiàn)詳解
- python爬蟲(chóng) 基于requests模塊發(fā)起ajax的get請(qǐng)求實(shí)現(xiàn)解析
- Python 使用requests模塊發(fā)送GET和POST請(qǐng)求的實(shí)現(xiàn)代碼
相關(guān)文章
詳解python使用pip安裝第三方庫(kù)(工具包)速度慢、超時(shí)、失敗的解決方案
這篇文章主要介紹了詳解python使用pip安裝第三方庫(kù)(工具包)速度慢、超時(shí)、失敗的解決方案,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12Python使用Matplotlib進(jìn)行圖案填充和邊緣顏色分離的三種方法
Matplotlib是Python中功能強(qiáng)大的繪圖庫(kù),允許廣泛的自定義選項(xiàng),一個(gè)常見(jiàn)的要求是分離出圖中的圖案填充和邊緣顏色,默認(rèn)情況下,Matplotlib中的填充顏色與邊緣顏色相關(guān)聯(lián),但有一些方法可以獨(dú)立自定義這些顏色,本文將深入研究如何實(shí)現(xiàn)這一點(diǎn)的技術(shù)細(xì)節(jié),并提供分步說(shuō)明和示例2025-01-01

python接口自動(dòng)化之正則用例參數(shù)化的示例詳解

Python re.split方法分割字符串的實(shí)現(xiàn)示例

Python替換月份為英文縮寫(xiě)的實(shí)現(xiàn)方法

使用graphics.py實(shí)現(xiàn)2048小游戲