【问题标题】:BS4 | Python | Scraping specific data in div with multiple valuesBS4 |蟒蛇 |用多个值抓取 div 中的特定数据
【发布时间】:2021-03-15 18:57:35
【问题描述】:

我对 Python 还很陌生,但我已经开始尝试使用 BS4 进行网络抓取 取得了一些成功,但我现在正在进行一个新的个人项目,我正在从 HTML 文件中为 AutoTrader 编制索引。

到目前为止,我能够抓取我需要的所有值,但只有一个。 我已经搜索了,但找不到解决方案

我需要从data-payment-province="BC" 中提取省份“BC” 从下面的代码

<div class="asLowAs payment-tag-disclaimer" data-payment-tag-adid="66736200" data-payment-province="BC" data-payment-tag-isnew="False" style="display: none" data-toggle="popover">

我用过location = soup.find_all('div', class_='data-payment-province')

但它返回[]

Idk,我可能很愚蠢并且错过了一些明显的东西,但老实说我很难过。

另外,我可能应该在另一个问题中问这个问题。但有谁知道如何只得到 将值作为输出而不是 HTML 和值?

例如

当前:

itemOffered = soup.find_all("span", itemprop="itemOffered")

输出:

</span>, <span itemprop=""itemOffered"">
2019 Hyundai Elantra GT | Bluetooth | Backup Camera | Heated Seats | Blind

所需的输出:

2019 Hyundai Elantra GT

【问题讨论】:

    标签: python beautifulsoup


    【解决方案1】:

    试一试你的第一个问题:

    import requests
    from bs4 import BeautifulSoup
    import re
    
    .....
    
    province_re = re.compile(r'[A-Z]{2}')
    
    location = soup.find_all('div', {'data-payment-province': province_re})
    
    for loc in location:
        print(loc.attrs['data-payment-province'])
    

    【讨论】:

    • 成功了!我还不明白为什么,但我要去研究它。谢谢!
    【解决方案2】:

    更简洁的方法是这样的:

    divs= soup.find_all('div')
    
    for div in divs:
       if div.has_attrs('data-payment-province'):
          print(div['data-payment-province'])
    

    要获取元素的文本,您可以使用:

    elements = soup.find_all(['span','element1','element2'])
    
    for element in elements:
       fulltextofelement = element.find(text=True, recursive=True)
       onlyparenttext = element.find(text=True, recursive=False)
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-01
      • 1970-01-01
      • 2020-07-08
      • 1970-01-01
      • 2021-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多