国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python爬蟲小案例——汽車之家

這篇具有很好參考價(jià)值的文章主要介紹了python爬蟲小案例——汽車之家。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

本篇文章是使用bs4中的BeautifulSoup和requests解析網(wǎng)頁和獲取數(shù)據(jù)????


??前言

為了更深入的學(xué)習(xí)爬蟲,今天來了解下bs4的使用和實(shí)踐,當(dāng)然解析網(wǎng)頁不止只有bs4的BeautifulSoup可以做到,還有xpath語法和正則表達(dá)式。本期是初步的了解BeautifulSoup模塊的使用,歡迎初學(xué)者學(xué)習(xí)本期內(nèi)容。
python爬蟲小案例——汽車之家,python,爬蟲


一、??bs4中的BeautifulSoup

BeautifulSoup庫是Python編程語言中的一款第三方庫,主要用于解析HTML和XML文檔。這個(gè)庫能夠?qū)?fù)雜的HTML或XML數(shù)據(jù)轉(zhuǎn)換為樹形結(jié)構(gòu)(即DOM樹),讓開發(fā)者能夠以更簡單的方式來遍歷、搜索和操作這些結(jié)構(gòu)化的數(shù)據(jù)。

bs4的四種解析方式

解析器 使用方法 優(yōu)勢 劣勢
python標(biāo)準(zhǔn)庫 soup = BeautifulSoup(htmlt, ‘html.parser’) python內(nèi)置標(biāo)準(zhǔn)庫;執(zhí)行速度適中 python2.x或者python3.2x前的版本中文文檔容錯(cuò)能力差
lxml HTML解析器 soup = BeautifulSoup(html, ‘lxml’) 速度快;文檔容錯(cuò)能力強(qiáng) 需要安裝c語言庫
lxml XML解析器 soup = BeautifulSoup(html, ‘xml’) 速度快;唯一支持XML的解析器 需要安裝c語言庫
html5lib soup = BeautifulSoup(html, ‘html5lib’) 最好的容錯(cuò)性;以瀏覽器的方式解析文檔;生成HTML5格式的文檔;不依賴外部擴(kuò)展庫 速度慢

二、??bs4的語法

  1. 獲取全部的單個(gè)標(biāo)簽:
soup.find_all('標(biāo)簽')
  1. 獲取擁有指定屬性的標(biāo)簽:
soup.find_all('標(biāo)簽',屬性的鍵值對)
soup.find_all('標(biāo)簽',attrs={鍵值對1,鍵值對2})

注意:attrs是存儲(chǔ)的是字典,里面可以包含html的多個(gè)屬性

  1. 獲取多個(gè)指定屬性的標(biāo)簽:
soup.find_all('標(biāo)簽',屬性的鍵值對1,屬性的鍵值對2)

如果在獲取時(shí),出現(xiàn)python關(guān)鍵字與屬性沖突時(shí),在獲取的時(shí)候添加一個(gè)下劃線 ' _ ' ,例如:

soup.find_all('div',class_='position')
  1. 獲取標(biāo)簽屬性值:

先鎖定標(biāo)簽

alist=soup.find_all('a')
  • 方法1:
    通過下標(biāo)方式提取
for a in alist:
    href=a['href']
    print(href)
  • 方法2:
    利用attrs參數(shù)提取
for a in alist:
	href=a.attrs['href']
	print(href)
  1. 獲取標(biāo)簽內(nèi)的文本信息:
    使用string方法
# 獲取html的所有div標(biāo)簽,從第二個(gè)開始
divs=soup.find_all('div')[1:]
# 利用循環(huán)輸出每個(gè)標(biāo)簽
for div in divs:
    # 只提取標(biāo)簽下的字符串
    a=div.find_all('a')[0].string
    
# 提取整個(gè)div下的字符串
divs=soup.find_all('div')[1:]
for div in divs:
    infos=list(div.stripped_strings)  # stripped_strings方法是刪除列表中的制表符,例如: "\n,\t"等

三、??內(nèi)容實(shí)踐

爬取的網(wǎng)頁鏈接:https://www.autohome.com.cn/news/1/#liststart

1. 確定想要爬取的內(nèi)容

在此以爬?。呵拔屙摰模?biāo)題、更新時(shí)間和頁面部分顯示的詳細(xì)內(nèi)容)

2. 分析網(wǎng)頁

首頁內(nèi)容,這里要注意的是這個(gè)網(wǎng)頁鏈接,可以從第一頁到第三頁的鏈接對比

python爬蟲小案例——汽車之家,python,爬蟲

仔細(xì)查看后,只有這個(gè)/news/后的數(shù)字發(fā)生了變化,所以我們只要做一個(gè)循環(huán)數(shù)字的方式更改內(nèi)容就可以

https://www.autohome.com.cn/news/1/#liststart
https://www.autohome.com.cn/news/2/#liststart
https://www.autohome.com.cn/news/3/#liststart

內(nèi)容實(shí)施:

urls = []         # 定義一個(gè)列表存放每頁的鏈接
for i in range(1, 6):
    url = f"https://www.autohome.com.cn/news/{i}/#liststart"
    urls.append(url)
# print(urls)

3. 獲取數(shù)據(jù)分析

  1. 觀察html標(biāo)簽內(nèi)容

python爬蟲小案例——汽車之家,python,爬蟲

  1. 獲取網(wǎng)頁的標(biāo)簽信息,發(fā)現(xiàn)這些標(biāo)簽都在div標(biāo)簽中的ul標(biāo)簽里面

python爬蟲小案例——汽車之家,python,爬蟲

  1. 對比標(biāo)簽,發(fā)現(xiàn)每個(gè)內(nèi)容都是使用的相同標(biāo)簽

python爬蟲小案例——汽車之家,python,爬蟲
python爬蟲小案例——汽車之家,python,爬蟲

  1. 代碼
# 導(dǎo)包
from bs4 import BeautifulSoup
import requests

# 設(shè)置請求頭
url = 'https://www.autohome.com.cn/news/'
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0.0"
}

# 利用循環(huán)讀取前5分頁
urls = []         # 定義一個(gè)列表存放每頁的鏈接
for i in range(1, 6):
    url = f"https://www.autohome.com.cn/news/{i}/#liststart"
    urls.append(url)
# print(urls)

# 定義兩個(gè)列表 news存放字典數(shù)據(jù)
news = []

for url in urls:
    # 利用try……except語句獲取每頁,如果某頁讀取不了,則繼續(xù)讀取下一頁
    try:
        response = requests.get(url, headers=headers)
        content = response.content.decode('gbk')  # 在網(wǎng)頁上查看編碼格式
        # print(content)

        # 實(shí)例化BeautifulSoup對象
        soup = BeautifulSoup(content, 'html.parser')
        # print(soup)

        # divs=soup.find_all('div',class_="article-pic")
        uls = soup.find_all('ul', class_="article")
        for ul in uls:
            # 獲取標(biāo)題
            title = list(ul.find_all('h3'))
            # 獲取更新日期
            times = list(ul.find_all('span', class_="fn-left"))
            # 獲取內(nèi)容
            profiles = list(ul.find_all('p'))

            # print(times,title,profiles)

            # 提取標(biāo)簽內(nèi)的字符串和使用zip打包在一起
            for title, times, profiles in zip(title, times, profiles):
                title = title.string
                times = times.string
                profiles = profiles.string
                # 將數(shù)據(jù)存放在字典中
                car_news = {
                    "title": title,
                    "times": times,
                    "profiles": profiles,
                }
                news.append(car_news)

    except:
        continue

print(news)
  1. 輸出結(jié)果

python爬蟲小案例——汽車之家,python,爬蟲

??總結(jié)

這里需要注意的是使用bs4語句獲取的標(biāo)簽內(nèi)容是bs4的類型,不是列表類型,所以使用了強(qiáng)制轉(zhuǎn)換成列表【list()】.

拓展:
在Python爬蟲中,即使代碼看起來沒有明顯語法錯(cuò)誤,爬取的數(shù)據(jù)仍然可能為空,這通常與以下因素有關(guān):

  1. 目標(biāo)網(wǎng)站結(jié)構(gòu)改變
    如果爬蟲是基于HTML結(jié)構(gòu)編寫的,而目標(biāo)網(wǎng)站進(jìn)行了改版或更新,原有的選擇器(如XPath或CSS Selector)可能不再有效,導(dǎo)致找不到預(yù)期的數(shù)據(jù)。
  2. 動(dòng)態(tài)加載內(nèi)容
    網(wǎng)頁上的數(shù)據(jù)可能是通過JavaScript動(dòng)態(tài)加載的,直接爬取HTML源代碼可能無法獲取這些數(shù)據(jù)。此時(shí)需要分析網(wǎng)頁加載邏輯,使用如Selenium、Pyppeteer等工具模擬瀏覽器行為,或者通過分析Ajax請求來間接獲取數(shù)據(jù)。
  3. 反爬策略
    目標(biāo)網(wǎng)站可能啟用了反爬蟲策略,比如Cookies驗(yàn)證、User-Agent限制、IP封鎖、驗(yàn)證碼、登錄驗(yàn)證等。這時(shí),需要針對這些策略進(jìn)行相應(yīng)的處理,比如設(shè)置更真實(shí)的User-Agent、使用代理IP池、處理驗(yàn)證碼或模擬登錄。
  4. 請求參數(shù)不正確
    請求頭信息(headers)、cookies、POST數(shù)據(jù)等參數(shù)可能需要特殊配置才能獲取數(shù)據(jù),如果缺少必要參數(shù)或參數(shù)不正確,服務(wù)器可能不會(huì)返回有效數(shù)據(jù)。
  5. 網(wǎng)絡(luò)問題
    即使代碼看似沒問題,網(wǎng)絡(luò)連接不穩(wěn)定或服務(wù)器端出現(xiàn)問題也可能導(dǎo)致無法獲取數(shù)據(jù)。
  6. 解析邏輯錯(cuò)誤
    數(shù)據(jù)解析環(huán)節(jié)可能出現(xiàn)問題,例如正則表達(dá)式匹配不正確,或者在解析HTML或JSON時(shí)引用了不存在的鍵或?qū)傩浴?/li>
  7. API調(diào)用權(quán)限或頻率限制
    若爬取的是API接口,可能存在調(diào)用頻率限制、API密鑰失效或沒有必要的授權(quán)。
  8. 數(shù)據(jù)緩存問題
    如果爬蟲有緩存機(jī)制并且緩存了錯(cuò)誤的結(jié)果,新的爬取可能會(huì)直接讀取緩存而非從服務(wù)器獲取新數(shù)據(jù)。

要解決這個(gè)問題,可以從以下幾個(gè)步驟入手:文章來源地址http://www.zghlxwxcb.cn/news/detail-857127.html

  • 檢查并確認(rèn)請求網(wǎng)址是否正確且能夠正常訪問;
  • 使用開發(fā)者工具查看網(wǎng)頁加載過程,確認(rèn)數(shù)據(jù)是如何加載和呈現(xiàn)的;
  • 檢查請求頭和請求體是否符合目標(biāo)網(wǎng)站的要求;
  • 檢查解析代碼邏輯,特別是提取數(shù)據(jù)的部分;
  • 檢測網(wǎng)絡(luò)狀況以及是否有反爬措施,調(diào)整爬蟲策略;
  • 對于動(dòng)態(tài)加載內(nèi)容,確保相應(yīng)腳本能夠正確執(zhí)行或模擬;
  • 針對可能出現(xiàn)的API限制,合理安排請求間隔,遵循網(wǎng)站的使用協(xié)議。

到了這里,關(guān)于python爬蟲小案例——汽車之家的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 聊一聊GIS之家團(tuán)隊(duì)數(shù)據(jù)案例源碼共享以及在線體驗(yàn)

    目錄 我們的初衷定位 我們的服務(wù)內(nèi)容 我們的經(jīng)營模式 GIS之家交流群 我們的未來規(guī)劃 各平臺(tái)賬號(hào) 目前階段我們團(tuán)隊(duì)創(chuàng)建的初衷定位,以服務(wù)初學(xué)者以及1-2年工作經(jīng)驗(yàn)的giser為主。利用我們深耕gis行業(yè)領(lǐng)域多年gis項(xiàng)目以及工作經(jīng)驗(yàn)優(yōu)勢,為他們提供地圖數(shù)據(jù)和案例源碼共享服

    2024年02月08日
    瀏覽(18)
  • Python爬蟲-新能源汽車對應(yīng)的“年份月份”銷量榜

    Python爬蟲-新能源汽車對應(yīng)的“年份月份”銷量榜

    前言 本文是該專欄的第15篇,后面會(huì)持續(xù)分享python爬蟲干貨知識(shí),記得關(guān)注。 在本專欄前面,筆者有單獨(dú)詳細(xì)介紹采集新能源汽車銷量榜,感興趣的同學(xué),可以往前翻閱查看《Python爬蟲-新能源汽車銷量榜》。而之后,也有很多同學(xué)單獨(dú)私信,那如果要單獨(dú)采集 某個(gè)年份 ,

    2024年02月03日
    瀏覽(109)
  • python爬蟲實(shí)戰(zhàn)案例——某站視頻爬蟲

    python爬蟲實(shí)戰(zhàn)案例——某站視頻爬蟲

    今天突然發(fā)現(xiàn),某站的視頻在電腦上是不能下載的。于是乎,就打算在電腦上爬取一下某站的視頻。讓大家在電腦上也能看, 某站的視頻是音頻和視頻分開的,我在網(wǎng)上搜了一下,要用到一個(gè)叫ffmpeg的音視頻合成的庫,網(wǎng)上教程很多,大家搜一下就可以找到了,我就不在此贅

    2024年02月10日
    瀏覽(27)
  • Python爬蟲實(shí)戰(zhàn)案例——音樂爬蟲,收費(fèi)歌曲依舊可用

    Python爬蟲實(shí)戰(zhàn)案例——音樂爬蟲,收費(fèi)歌曲依舊可用

    因?yàn)楝F(xiàn)在眾多音樂平臺(tái)下載歌曲都要收費(fèi)了,導(dǎo)致我沒有車載音樂聽了。于是便自學(xué)爬蟲做了這個(gè)簡易的音樂爬蟲。不是那些大平臺(tái)的音樂爬蟲,是一個(gè)不知名的小音樂網(wǎng)站的爬蟲。下面開始正題: 首先,便是找不是那幾家大互聯(lián)網(wǎng)公司的音樂網(wǎng)站,在我的不懈努力之下終于

    2024年02月03日
    瀏覽(25)
  • Python爬蟲案例分享

    1. 導(dǎo)入所需庫: requests 庫:這是一個(gè)Python HTTP客戶端庫,用于發(fā)送HTTP請求。在這個(gè)案例中,我們使用它來向目標(biāo)網(wǎng)站發(fā)送GET請求,獲取網(wǎng)頁內(nèi)容。 BeautifulSoup 庫:它是Python的一個(gè)解析庫,主要用于解析HTML和XML文檔。在爬蟲項(xiàng)目中,我們經(jīng)常用它來解析從網(wǎng)頁獲取的HTML文本,

    2024年01月19日
    瀏覽(42)
  • Python爬蟲實(shí)戰(zhàn)案例——第二例

    Python爬蟲實(shí)戰(zhàn)案例——第二例

    某某美劇劇集下載(從搜索片名開始) 本篇文章主要是為大家提供某些電影網(wǎng)站的較常規(guī)的下載電影的分析思路與代碼思路(通過爬蟲下載電影),我們會(huì)從搜索某部影片的開始直到成功下載某一部電影。 地址:aHR0cHM6Ly93d3cuOTltZWlqdXR0LmNvbS9pbmRleC5odG1s 先來分析頁面 打開開發(fā)

    2024年02月11日
    瀏覽(18)
  • Python爬蟲實(shí)戰(zhàn)案例——第一例

    Python爬蟲實(shí)戰(zhàn)案例——第一例

    X盧小說登錄(包括驗(yàn)證碼處理) 地址:aHR0cHM6Ly91LmZhbG9vLmNvbS9yZWdpc3QvbG9naW4uYXNweA== 打開頁面直接進(jìn)行分析 任意輸入用戶名密碼及驗(yàn)證碼之后可以看到抓到的包中傳輸?shù)臄?shù)據(jù)明顯需要的是 txtPwd 進(jìn)行加密分析。按 ctrl+shift+f 進(jìn)行搜索。 定位來到源代碼中斷點(diǎn)進(jìn)行調(diào)試。 然后直接跟

    2024年02月12日
    瀏覽(22)
  • Python Selenium 爬蟲淘寶案例

    Python Selenium 爬蟲淘寶案例

    在前一章中,我們已經(jīng)成功嘗試分析 Ajax 來抓取相關(guān)數(shù)據(jù),但是并不是所有頁面都可以通過分析 Ajax 來完成抓取。比如,淘寶,它的整個(gè)頁面數(shù)據(jù)確實(shí)也是通過 Ajax 獲取的,但是這些 Ajax 接口參數(shù)比較復(fù)雜,可能會(huì)包含加密密鑰等,所以如果想自己構(gòu)造 Ajax 參數(shù),還是比較困

    2024年02月20日
    瀏覽(28)
  • Python爬蟲(十七)_糗事百科案例

    Python爬蟲(十七)_糗事百科案例

    爬取糗事百科段子,假設(shè)頁面的URL是: http://www.qiushibaike.com/8hr/page/1 使用requests獲取頁面信息,用XPath/re做數(shù)據(jù)提取 獲取每個(gè)帖子里的用戶頭像連接、用戶姓名、段子內(nèi)容、點(diǎn)贊次數(shù)和評論次數(shù) 保存到j(luò)son文件內(nèi) 糗事百科

    2024年02月10日
    瀏覽(21)
  • 分享Python7個(gè)爬蟲小案例(附源碼)_爬蟲實(shí)例

    分享Python7個(gè)爬蟲小案例(附源碼)_爬蟲實(shí)例

    在這篇文章中,我們將分享7個(gè)Python爬蟲的小案例,幫助大家更好地學(xué)習(xí)和了解Python爬蟲的基礎(chǔ)知識(shí)。以下是每個(gè)案例的簡介和源代碼: 1. 爬取豆瓣電影Top250 這個(gè)案例使用BeautifulSoup庫爬取豆瓣電影Top250的電影名稱、評分和評價(jià)人數(shù)等信息,并將這些信息保存到CSV文件中。 2

    2024年04月16日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包