亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 BeautifulSoup 和 pandas 將列表項內標題下方的文本抓取到列中

使用 BeautifulSoup 和 pandas 將列表項內標題下方的文本抓取到列中

一只甜甜圈 2023-11-13 10:36:43
我正在嘗試使用 BeautifulSoup 和 pandas 來抓取和存儲一些項目。下面的代碼僅部分有效。正如您所看到的,它刮掉了“Engine426/425 HP”,而我只希望將字符串“426/425 HP”存儲在“engine”列中。我想抓取下面 HTML 中的所有 4 個 h5 字符串(請參閱下面所需的輸出)。我希望有人能幫助我,謝謝!import numpy as npimport pandas as pdfrom bs4 import BeautifulSoupimport requestsimport remain_url = "https://www.example.com/"def getAndParseURL(url):    result = requests.get(url)    soup = BeautifulSoup(result.text, 'html.parser')    return(soup)soup = getAndParseURL(main_url)engine = []engine.append(soup.find("ul", class_ = re.compile('list-inline lot-breakdown-list')).li.text)scraped_data = pd.DataFrame({'engine': engine})scraped_data.head()              engine0   Engine426/425 HP超文本標記語言<div class="lot-breakdown">    <ul class="list-inline lot-breakdown-list">        <li>            <h5>Engine</h5>426/425 HP</li>        <li>            <h5>Trans</h5>Automatic</li>        <li>            <h5>Color</h5>Alpine White</li>        <li>            <h5>Interior</h5>Black</li>    </ul></div>所需輸出scraped_data[['engine', 'trans', 'color', 'interior']] = pd.DataFrame([['426/425 HP', 'Automatic', 'Alpine White', 'Black']], index=scraped_data.index)scraped_data              engine        trans          color  interior0         426/425 HP    Automatic   Alpine White     Black
查看完整描述

1 回答

?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

您可以通過多種方式實現這一目標:


    from bs4 import BeautifulSoup , NavigableString

    import requests


    main_url = "https://www.example.com/"


    def getAndParseURL(url):

        result = requests.get(url)

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

        return(soup)


    soup = getAndParseURL(main_url)

    #ul   = soup.select('ul[class="list-inline lot-breakdown-list"] li')

    #for li in ul :

         #x = li.find(text=True, recursive=False) # Will give you the text of the li skipping the text of child tag

         #y = ' '.join([t for t in li.contents if type(t)== NavigableString]) # contents [<h5>Engine</h5>, '426/425 HP'] the text you want has a type of NavigableString and That's what we are returning .

    ul = soup.select('ul[class="list-inline lot-breakdown-list"] li', recursive=True)

    lis_e = []

    for li in ul:

        lis = []

        lis.append(li.contents[1])

        lis_e.extend(lis)


    engine.append(lis_e[0])

    trans.append(lis_e[1])

    color.append(lis_e[2])

    interior.append(lis_e[3])


    scraped_data = pd.DataFrame({'engine': engine, 'transmission': trans, 'color': color, 'interior': interior})

    scraped_data


查看完整回答
反對 回復 2023-11-13
  • 1 回答
  • 0 關注
  • 128 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號