日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python提取网页中p标签中的内容_使用Python进行爬虫的初学者指南

發(fā)布時間:2023/12/10 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python提取网页中p标签中的内容_使用Python进行爬虫的初学者指南 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

爬蟲是一種從網(wǎng)站上抓取大量數(shù)據(jù)的自動化方法。即使是復(fù)制和粘貼你喜歡的網(wǎng)站上的引用或行,也是一種web抓取的形式。大多數(shù)網(wǎng)站不允許你保存他們網(wǎng)站上的數(shù)據(jù)供你使用。因此,唯一的選擇是手動復(fù)制數(shù)據(jù),這將消耗大量時間,甚至可能需要幾天才能完成。

網(wǎng)站上的數(shù)據(jù)大多是非結(jié)構(gòu)化的。Web抓取有助于將這些非結(jié)構(gòu)化數(shù)據(jù),并將其以自定義和結(jié)構(gòu)化的形式存儲到本地或數(shù)據(jù)庫中。如果您是為了學(xué)習(xí)的目的而抓取web頁面,那么您不太可能會遇到任何問題,在不違反服務(wù)條款的情況下,自己進(jìn)行一些web抓取來增強(qiáng)您的技能是一個很好的實踐。

爬蟲步驟

為什么使用Python進(jìn)行Web抓取?

Python速度快得令人難以置信,而且更容易進(jìn)行web抓取。由于太容易編碼,您可以使用簡單的小代碼來執(zhí)行大型任務(wù)。

如何進(jìn)行Web抓取?

我們需要運行web抓取的代碼,以便將請求發(fā)送到我們想要抓取的網(wǎng)站的URL。服務(wù)器發(fā)送數(shù)據(jù)并允許我們讀取HTML或XML頁面作為響應(yīng)。代碼解析HTML或XML頁面,查找數(shù)據(jù)并提取它們。

下面是使用Python使用Web抓取提取數(shù)據(jù)的步驟

  • 尋找您想要抓取的URL
  • 分析網(wǎng)站
  • 找到要提取的數(shù)據(jù)
  • 編寫代碼
  • 運行代碼并從網(wǎng)站中提取數(shù)據(jù)
  • 將所需格式的數(shù)據(jù)存儲在計算機(jī)中
  • 用于Web抓取的庫

    • Requests
    • Beautiful Soup
    • Pandas
    • Tqdm

    Requests是一個允許使用Python發(fā)送HTTP請求的模塊。HTTP請求用于返回一個包含所有響應(yīng)數(shù)據(jù)(如編碼、狀態(tài)、內(nèi)容等)的響應(yīng)對象

    BeautifulSoup是一個用于從HTML和XML文件中提取數(shù)據(jù)的Python庫。這適用于您喜歡的解析器,以便提供導(dǎo)航、搜索和修改解析樹的慣用方法。它是專門為快速和高可靠的數(shù)據(jù)提取而設(shè)計的。

    pandas是一個開源庫,它允許我們在Python web開發(fā)中執(zhí)行數(shù)據(jù)操作。它構(gòu)建在Numpy包上,其關(guān)鍵數(shù)據(jù)結(jié)構(gòu)稱為DataFrame。DataFrames允許我們在觀察數(shù)據(jù)行和變量列中存儲和操作表格數(shù)據(jù)。

    Tqdm是另一個python庫,它可以迅速地使您的循環(huán)顯示一個智能進(jìn)度計—您所要做的就是用Tqdm(iterable)包裝任何可迭代的。

    演示:抓取一個網(wǎng)站

    Step 1. 尋找您想要抓取的URL

    為了演示,我們將抓取網(wǎng)頁來提取手機(jī)的詳細(xì)信息。我使用了一個示例(www.example.com)來展示這個過程。

    Stpe 2. 分析網(wǎng)站

    數(shù)據(jù)通常嵌套在標(biāo)記中。分析和檢查我們想要獲取的數(shù)據(jù)被標(biāo)記在其下的頁面是嵌套的。要查看頁面,只需右鍵單擊元素,然后單擊“inspect”。一個小的檢查元件盒將被打開。您可以看到站點背后的原始代碼。現(xiàn)在你可以找到你想要刮的細(xì)節(jié)標(biāo)簽了。

    您可以在控制臺的左上角找到一個箭頭符號。如果單擊箭頭,然后單擊產(chǎn)品區(qū)域,則特定產(chǎn)品區(qū)域的代碼將在console選項卡中突出顯示。

    我們應(yīng)該做的第一件事是回顧和理解HTML的結(jié)構(gòu),因為從網(wǎng)站上獲取數(shù)據(jù)是非常重要的。網(wǎng)站頁面上會有很多代碼,我們需要包含我們數(shù)據(jù)的代碼。學(xué)習(xí)HTML的基礎(chǔ)知識將有助于熟悉HTML標(biāo)記。

    Step 3.找到要提取的數(shù)據(jù)

    我們將提取手機(jī)數(shù)據(jù),如產(chǎn)品名稱、實際價格、折扣價格等。您可以提取任何類型的數(shù)據(jù)。為此,我們必須找到包含我們的數(shù)據(jù)的標(biāo)記。

    通過檢查元素的區(qū)域來打開控制臺。點擊左上角的箭頭,然后點擊產(chǎn)品。您現(xiàn)在將能夠看到我們點擊的產(chǎn)品的特定代碼。

    Step 4. 編寫代碼

    現(xiàn)在我們必須找出數(shù)據(jù)和鏈接的位置。讓我們開始代碼編寫。

    創(chuàng)建一個名為scrap.py的文件,并在您選擇的任何編輯器中打開它。我們將使用pip安裝上面提到的四個Python庫。

    第一個和主要的過程是訪問站點數(shù)據(jù)。我們已經(jīng)設(shè)置了該網(wǎng)站的URL,并訪問了該網(wǎng)站。

    url?=?'https://www.example.com/products/mobiles-mobile-phones?sort=plrty'headers = { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64)' 'AppleWebKit/537.36 (KHTML, like Gecko)' 'Chrome/64.0.3282.167 Safari/537.36' }result = requests.get(url, headers=headers,verify=True)Print(result)

    Output:

    如果你看到上面的結(jié)果,那么你已經(jīng)成功訪問了這個網(wǎng)站。

    Step 5. 運行代碼并從網(wǎng)站中提取數(shù)據(jù)

    現(xiàn)在,我們將使用Beautifulsoup解析HTML。

    soup = BeautifulSoup(result.content, 'html.parser')

    如果我們打印soup,然后我們將能夠看到整個網(wǎng)站頁面的HTML內(nèi)容。我們現(xiàn)在要做的就是過濾包含數(shù)據(jù)的部分。因此,我們將從soup中提取section標(biāo)記。

    section=soup.find("section",?class_='js-section').find_all("div",{'class':'product-desc-rating})Print(section)

    結(jié)果如下:

    現(xiàn)在,我們可以在div的“product-desc-rating”類中提取移動電話的詳細(xì)信息。我已經(jīng)為移動電話的每個列細(xì)節(jié)創(chuàng)建了一個列表,并使用for循環(huán)將其附加到該列表中。

    Products = []url = []Actual_Price = []Discounted_Price = []Discount = []

    產(chǎn)品名稱出現(xiàn)在HTML中的p標(biāo)記(段落標(biāo)記)之下,而product_url則出現(xiàn)在錨標(biāo)記之下。

    HTML錨標(biāo)記定義了一個超鏈接,將一個頁面鏈接到另一個頁面。它可以創(chuàng)建到另一個web頁面以及文件、位置或任何URL的超鏈接。“href”屬性是HTML標(biāo)記最重要的屬性。以及指向目標(biāo)頁面或URL的鏈接。

    然后我們將提取實際價格和折扣價格,它們都出現(xiàn)在span標(biāo)簽中。標(biāo)簽用于對內(nèi)聯(lián)元素進(jìn)行分組。并且標(biāo)簽本身不提供任何視覺變化。最后,我們將從div標(biāo)簽中提取報價百分比。div標(biāo)記是塊級標(biāo)記。它是一個通用的容器標(biāo)簽。它用于HTML的各種標(biāo)記組,以便可以創(chuàng)建節(jié)并將樣式應(yīng)用于它們。

    for t in tqdm(section): product_name = t.p.text Products.append(product_name) product_url = t.a['href'] url.append(product_url) original_price = t.span.getText() Actual_Price.append(original_price) discounted_price = t.find('span', class_ = 'lfloat product-price').getText() Discounted_Price.append(discounted_price) try: product_discount = t.find('div', class_ = 'product-discount') Discount.append(product_discount.text) except Exception as e: product_discount = None Discount.append(product_discount)

    Step 6. 以所需的格式存儲數(shù)據(jù)

    我們已經(jīng)提取了數(shù)據(jù)。我們現(xiàn)在要做的就是將數(shù)據(jù)存儲到文件或數(shù)據(jù)庫中。您可以按照所需的格式存儲數(shù)據(jù)。這取決于你的要求。在這里,我們將以CSV(逗號分隔值)格式存儲提取的數(shù)據(jù)。

    = pd.DataFrame({'Product Name':Products,'Actual_Price':Actual_Price,'Discounted_Price':Discounted_Price,'Offer_Percentage':Discount,'Product_url':url}) df.to_csv(' products.csv', index=False, encoding='utf-8')

    參考:

    https://www.agiratech.com/web-scraping-using-python

    總結(jié)

    以上是生活随笔為你收集整理的python提取网页中p标签中的内容_使用Python进行爬虫的初学者指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。