BS4 | Python |使用多个值在div中刮取特定数据

BS4 | Python |使用多个值在div中刮取特定数据,python,beautifulsoup,Python,Beautifulsoup,我对Python非常陌生,但我已经开始尝试使用BS4进行web抓取 虽然取得了一些成功,但我现在正在进行一个新的个人项目,我正在从一个HTML文件为AutoTrader编制索引 到目前为止,我能勉强获得我需要的所有价值,但只有一个。 我已经找过了,找不到解决办法 我需要从数据payment province=BC中提取省BC 从下面的代码 <div class="asLowAs payment-tag-disclaimer" data-payment-tag-adid=

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

到目前为止,我能勉强获得我需要的所有价值,但只有一个。 我已经找过了,找不到解决办法

我需要从数据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">
输出:

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

为您的第一个问题试一试:

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'])

一个更干净的方法是:

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)


成功了!我还不明白为什么,但我要研究一下。非常感谢。
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)