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

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