欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python爬蟲(chóng)爬取某圖書網(wǎng)頁(yè)實(shí)例講解

 更新時(shí)間:2024年08月29日 09:43:01   作者:紅米煮粥  
這篇文章主要介紹了python爬蟲(chóng)爬取某圖書網(wǎng)頁(yè)實(shí)例,下面是通過(guò)requests庫(kù)來(lái)對(duì)ajax頁(yè)面進(jìn)行爬取的案例,與正常頁(yè)面不同,這里我們獲取url的方式也會(huì)不同,這里我們通過(guò)爬取一個(gè)簡(jiǎn)單的ajax小說(shuō)頁(yè)面來(lái)為大家講解,需要的朋友可以參考下

下面是通過(guò)requests庫(kù)來(lái)對(duì)ajax頁(yè)面進(jìn)行爬取的案例,與正常頁(yè)面不同,這里我們獲取url的方式也會(huì)不同,這里我們通過(guò)爬取一個(gè)簡(jiǎn)單的ajax小說(shuō)頁(yè)面來(lái)為大家講解。(注:結(jié)尾附贈(zèng)全部代碼與詳細(xì)注釋)

導(dǎo)入相應(yīng)的庫(kù)

爬取數(shù)據(jù)必須有相應(yīng)的庫(kù),這里我們使用爬蟲(chóng)腳本中常用的幾個(gè)Python庫(kù):os.path、fake_useragent 和 requests。
1.os.path:

  • 這個(gè)模塊主要用于處理文件和目錄的路徑。它提供了一系列的功能來(lái)進(jìn)行路徑的拼接、拆分、查詢等操作,以確保路徑的跨平臺(tái)兼容性(比如Windows和Unix/Linux系統(tǒng)的路徑分隔符不同)。
  • 在爬蟲(chóng)中,os.path 通常用于構(gòu)建本地文件系統(tǒng)的路徑,以便保存從網(wǎng)絡(luò)上下載的圖片、文本數(shù)據(jù)等。

2.fake_useragent:

  • 這個(gè)庫(kù)用于生成隨機(jī)的、看起來(lái)像是真實(shí)瀏覽器的User-Agent字符串。User-Agent是一個(gè)在HTTP請(qǐng)求中發(fā)送給服務(wù)器的頭部信息,它告訴服務(wù)器發(fā)起請(qǐng)求的客戶端(通常是瀏覽器)的類型、版本和操作系統(tǒng)等信息。
  • 在爬蟲(chóng)中,由于許多網(wǎng)站會(huì)檢查User-Agent來(lái)識(shí)別爬蟲(chóng)請(qǐng)求并阻止它們,因此使用fake_useragent可以幫助爬蟲(chóng)繞過(guò)這種簡(jiǎn)單的反爬蟲(chóng)機(jī)制。

3.requests:

  • requests是Python中非常流行的HTTP庫(kù),用于發(fā)送HTTP/1.1請(qǐng)求。它提供了一個(gè)簡(jiǎn)單易用的API,用于處理各種HTTP請(qǐng)求,如GET、POST、PUT、DELETE等。
  • 在爬蟲(chóng)中,requests庫(kù)是發(fā)送網(wǎng)絡(luò)請(qǐng)求并獲取響應(yīng)的主要工具。它支持會(huì)話(Session)對(duì)象、HTTPS請(qǐng)求、文件上傳、Cookie處理、重定向、連接池等功能,非常適合用于構(gòu)建復(fù)雜的爬蟲(chóng)系統(tǒng)。
import os.path  
import fake_useragent  
import requests  

正確地設(shè)置代碼的基礎(chǔ)部分

這里我們生成一個(gè)隨機(jī)的User-Agent、檢查并創(chuàng)建目錄以便儲(chǔ)存爬取的圖片、以及打開(kāi)(或創(chuàng)建)一個(gè)文本文件來(lái)保存數(shù)據(jù)。

import os.path  
import fake_useragent  
import requests  
# 判斷是否是直接運(yùn)行該腳本  
if __name__ == '__main__':  
    head = {"User-Agent": fake_useragent.UserAgent().random}  
    if not os.path.exists("./biqugePic"):  
        os.mkdir("./biqugePic")  
    f = open("./biquge.txt", 'w', encoding='utf8')  

設(shè)置循環(huán)遍歷

循環(huán)遍歷URL(這里為大家提供具體url的獲取方法,并循環(huán)了1至9頁(yè)的數(shù)據(jù)為大家做案例),并發(fā)送了帶有隨機(jī)User-Agent的GET請(qǐng)求。這是爬蟲(chóng)中常見(jiàn)的做法,用于從網(wǎng)站的不同頁(yè)面獲取數(shù)據(jù)。

 for i in range(1, 10):  
        url = f"https://www.bqgui.cc/json?sortid=1&page={i}"  
        resp = requests.get(url, headers=head)  

首先進(jìn)入網(wǎng)頁(yè),點(diǎn)擊F12打開(kāi)自定義與控制工具,點(diǎn)擊fecth/XHR,此時(shí)顯示部分為空白。

這個(gè)時(shí)候我們滾動(dòng)鼠標(biāo)滾輪,就會(huì)出現(xiàn)相應(yīng)的url,這里的https://www.bqgui.cc/json?sortid=1&page=2,其中尾部2表示滾輪頁(yè)面第二頁(yè),想要獲取1至9我們只需要進(jìn)行一個(gè)簡(jiǎn)單的循環(huán)遍歷即可。

遍歷URL

遍歷從URL獲取的JSON響應(yīng),該響應(yīng)包含多個(gè)項(xiàng)目。對(duì)于每個(gè)項(xiàng)目,您都提取了圖片URL、文章名、作者和簡(jiǎn)介,并計(jì)劃將這些信息打印到控制臺(tái)以及下載圖片和保存文本信息到文件。

 for item in resp.json():  
	# 從每個(gè)JSON對(duì)象中提取所需的信息  
	img_url = item['url_img']  
	articlename = item['articlename']  
	author = item['author']  
	intro = item["intro"]  
	# 打印提取的信息到控制臺(tái)  
	print(img_url, author, articlename, intro)  
	# 發(fā)送另一個(gè)GET請(qǐng)求到圖片URL,以獲取圖片內(nèi)容  
	img_rest = requests.get(img_url, headers=head)  

保存圖片和文檔

設(shè)置代碼來(lái)保存圖片到以文章名命名的文件中,并將作者、文章名和簡(jiǎn)介信息寫入到"./biquge.txt"文件中。

with open(f"./biqugePic/{articlename}.jpg", "wb") as fp:  
# 將圖片內(nèi)容寫入文件  
fp.write(img_rest.content)  
# 將作者、文章名和簡(jiǎn)介信息寫入到"./biquge.txt"文件中  
f.write(author + '#' + articlename + '#' + intro + "\n")

全部代碼即詳細(xì)注釋

import os.path  
import fake_useragent  
import requests  
# 判斷是否是直接運(yùn)行該腳本  
if __name__ == '__main__':  
    # 創(chuàng)建一個(gè)包含隨機(jī)User-Agent的HTTP請(qǐng)求頭  
    head = {"User-Agent": fake_useragent.UserAgent().random}  
    # 檢查是否存在名為"./biqugePic"的文件夾,如果不存在則創(chuàng)建它  
    if not os.path.exists("./biqugePic"):  
        os.mkdir("./biqugePic")  
    # 以寫入模式打開(kāi)(或創(chuàng)建)一個(gè)名為"./biquge.txt"的文件,用于保存數(shù)據(jù)  
    f = open("./biquge.txt", 'w', encoding='utf8')  
    # 循環(huán)從第1頁(yè)到第9頁(yè)(注意,range函數(shù)是左閉右開(kāi)的,所以不包括10)  
    for i in range(1, 10):  
        # 構(gòu)造請(qǐng)求URL,這里假設(shè)每個(gè)頁(yè)面的數(shù)據(jù)都可以通過(guò)此URL以JSON格式獲取  
        url = f"https://www.bqgui.cc/json?sortid=1&page={i}"  
        # 發(fā)送GET請(qǐng)求到URL,并帶上之前創(chuàng)建的請(qǐng)求頭  
        resp = requests.get(url, headers=head)  
        # 假設(shè)服務(wù)器返回的是JSON格式的數(shù)據(jù),我們遍歷這些數(shù)據(jù)  
        # 注意:這里有個(gè)潛在的問(wèn)題,因?yàn)閮?nèi)部循環(huán)的變量也使用了'i',這會(huì)覆蓋外層循環(huán)的'i'  
        # 為了避免混淆,應(yīng)該使用另一個(gè)變量名,比如'item'  
        for item in resp.json():  
            # 從每個(gè)JSON對(duì)象中提取所需的信息  
            img_url = item['url_img']  
            articlename = item['articlename']  
            author = item['author']  
            intro = item["intro"]  
            # 打印提取的信息到控制臺(tái)  
            print(img_url, author, articlename, intro)  
            # 發(fā)送另一個(gè)GET請(qǐng)求到圖片URL,以獲取圖片內(nèi)容  
            img_rest = requests.get(img_url, headers=head)  
            # 打開(kāi)(或創(chuàng)建)一個(gè)文件,用于保存圖片,文件名基于文章名  
            with open(f"./biqugePic/{articlename}.jpg", "wb") as fp:  
                # 將圖片內(nèi)容寫入文件  
                fp.write(img_rest.content)  
            # 將作者、文章名和簡(jiǎn)介信息寫入到"./biquge.txt"文件中  
            f.write(author + '#' + articlename + '#' + intro + "\n") 

注意:

  • 代碼假設(shè)了服務(wù)器返回的JSON結(jié)構(gòu)是固定的,并且每個(gè)對(duì)象都包含’url_img’, ‘articlename’, ‘author’, 和 'intro’鍵。
  • 在實(shí)際應(yīng)用中,網(wǎng)絡(luò)請(qǐng)求可能會(huì)失?。ㄈ?04、500等HTTP錯(cuò)誤),應(yīng)該添加錯(cuò)誤處理邏輯。
  • 由于網(wǎng)絡(luò)延遲和帶寬限制,大量請(qǐng)求可能會(huì)導(dǎo)致性能問(wèn)題或被服務(wù)器封鎖。
  • 使用fake_useragent生成隨機(jī)User-Agent可以幫助繞過(guò)一些簡(jiǎn)單的反爬蟲(chóng)機(jī)制,但不一定對(duì)所有網(wǎng)站都有效。

到此這篇關(guān)于python爬蟲(chóng)爬取某圖書網(wǎng)頁(yè)實(shí)例的文章就介紹到這了,更多相關(guān)python爬蟲(chóng)爬取某圖書網(wǎng)頁(yè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用Python制作簡(jiǎn)易的核酸檢測(cè)日歷

    利用Python制作簡(jiǎn)易的核酸檢測(cè)日歷

    這篇文章主要為大家詳細(xì)介紹了如何利用Python語(yǔ)言制作簡(jiǎn)易的核酸檢測(cè)日歷,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以動(dòng)手嘗試一下
    2022-09-09
  • PyCharm Python Console中文輸出亂碼問(wèn)題及解決

    PyCharm Python Console中文輸出亂碼問(wèn)題及解決

    這篇文章主要介紹了PyCharm Python Console中文輸出亂碼問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • python模塊中判斷全局變量的賦值的實(shí)例講解

    python模塊中判斷全局變量的賦值的實(shí)例講解

    在本篇文章里小編給大家整理的是一篇關(guān)于python模塊中判斷全局變量的賦值的實(shí)例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-03-03
  • pandas如何靈活增加新的空字段

    pandas如何靈活增加新的空字段

    這篇文章主要介紹了pandas如何靈活增加新的空字段問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python tkinter實(shí)現(xiàn)鼠標(biāo)懸停提示

    python tkinter實(shí)現(xiàn)鼠標(biāo)懸停提示

    這篇文章主要為大家詳細(xì)介紹了python如何使用tkinter控件實(shí)現(xiàn)鼠標(biāo)懸停提示以及提示文本動(dòng)態(tài)展示,文中的示例代碼講解詳細(xì),有需要的可以參考下
    2024-11-11
  • python實(shí)現(xiàn)解數(shù)獨(dú)程序代碼

    python實(shí)現(xiàn)解數(shù)獨(dú)程序代碼

    最近在帶孩子學(xué)習(xí)數(shù)獨(dú),職業(yè)使然,就上網(wǎng)搜了下相關(guān)程序的解法,這里分享給大家,希望對(duì)大家學(xué)習(xí)python有所幫助
    2017-04-04
  • Python 實(shí)現(xiàn)網(wǎng)頁(yè)自動(dòng)截圖的示例講解

    Python 實(shí)現(xiàn)網(wǎng)頁(yè)自動(dòng)截圖的示例講解

    今天小編就為大家分享一篇Python 實(shí)現(xiàn)網(wǎng)頁(yè)自動(dòng)截圖的示例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • python仿抖音表白神器

    python仿抖音表白神器

    這篇文章主要教大家制作python抖音表白神器,仿制抖音表白小軟件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • python用selenium打開(kāi)瀏覽器后秒關(guān)閉瀏覽器的解決辦法

    python用selenium打開(kāi)瀏覽器后秒關(guān)閉瀏覽器的解決辦法

    最近朋友在學(xué)Selenium的時(shí)候遇到一個(gè)問(wèn)題,當(dāng)執(zhí)行完selenium程序后,瀏覽器會(huì)閃退也就是自動(dòng)關(guān)閉,這篇文章主要給大家介紹了關(guān)于python用selenium打開(kāi)瀏覽器后秒關(guān)閉瀏覽器的解決辦法,需要的朋友可以參考下
    2023-07-07
  • python使用torch隨機(jī)初始化參數(shù)

    python使用torch隨機(jī)初始化參數(shù)

    這篇文章主要介紹了python使用torch隨機(jī)初始化參數(shù),文章圍繞torch隨機(jī)初始化參數(shù)的相關(guān)資料展開(kāi)文章詳細(xì)內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴可以參考一下,希望對(duì)你有所幫助
    2022-03-03

最新評(píng)論