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

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

Beautiful Soup - 在帶有字符串的標簽中找到一個標簽?第n個孩子?

Beautiful Soup - 在帶有字符串的標簽中找到一個標簽?第n個孩子?

料青山看我應如是 2022-06-02 18:08:31
我在使用以下 HTML Scrape 時遇到了一些問題 res =   <div class="gunDetails">    <h4>Specifications</h4>    <ul class="features">        <li><label>Make:</label><span itemprop="brand">Gamo</span></li>        <li><label>Model:</label><span itemprop="model">Coyote Black Tactical</span></li>        <li><label>Licence:</label><span>No Licence</span></li>        <li><label>Orient.:</label><span>Ambidextrous</span></li>        <li><label>Scope:</label><span>Unknown&nbsp;3-9x32</span></li>        <li><label>Origin:</label><span>Spanish</span></li>        <li><label>Cased:</label><span>Other</span></li>        <li><label>Trigger:</label><span>1</span></li>        <li><label>Condition:</label><span itemprop="itemCondition">Used</span></li>    </ul>  </div>我正在嘗試將文本放入它自己的單獨變量中,以便我可以將其導出到帶有我自己的標題的 CSV。每當我這樣做時,我都可以將它們全部放在一個字符串中,或者根本沒有。soup = BeautifulSoup(res, 'html.parser')gun_details = soup.select_one('div.gunDetails')for tag in gun_details or []:  for tag in gun_details.select("li"):   for tag in gun_details.select('span'):      print(tag.text)輸出GamoCoyote Black TacticalNo LicenseAmbidextrousUnknown 3-9x32SpanishOther1Used無論如何,我可以為每個標簽文本創建一個變量嗎?就像是?gun_make = gun_details.findAll('label', String="Make:")print(gun_make).text
查看完整描述

1 回答

?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

讓我們試試這個:


res =  """ <div class="gunDetails">

    <h4>Specifications</h4>

    <ul class="features">

        <li><label>Make:</label><span itemprop="brand">Gamo</span></li>

        <li><label>Model:</label><span itemprop="model">Coyote Black Tactical</span></li>

        <li><label>Licence:</label><span>No Licence</span></li>

        <li><label>Orient.:</label><span>Ambidextrous</span></li>

        <li><label>Scope:</label><span>Unknown&nbsp;3-9x32</span></li>

        <li><label>Origin:</label><span>Spanish</span></li>

        <li><label>Cased:</label><span>Other</span></li>

        <li><label>Trigger:</label><span>1</span></li>

        <li><label>Condition:</label><span itemprop="itemCondition">Used</span></li>

    </ul>

  </div>

""


from bs4 import BeautifulSoup as bs

import csv


labels = []

spans = []

soup = bs(res, 'html.parser')

gun_details = soup.select_one('div.gunDetails')

for l in gun_details.select('label'):

    labels.append(l.text.replace(':',''))

for s in gun_details.select('span'):

    spans.append(s.text)


my_dict = dict(zip(labels, spans))

with open('mycsvfile.csv','w') as csvfile:

        writer = csv.DictWriter(csvfile, fieldnames=None)

        for key in my_dict.keys():

            csvfile.write(f"{key},{my_dict[key]}\n")

輸出:


Make    Gamo

Model   Coyote Black Tactical

Licence No Licence

Orient. Ambidextrous

Scope   Unknown 3-9x32

Origin  Spanish

Cased   Other

Trigger 1

Condition   Used


查看完整回答
反對 回復 2022-06-02
  • 1 回答
  • 0 關注
  • 94 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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