Python Beautiful Soup 没有提取所有数据

时间:2021-04-12 10:53:43

标签: python html web-scraping beautifulsoup

我目前希望使用 Beautiful Soup 从 Luxembourg Stock Exchange 的具有特定类和 ID 的 URL html 中提取特定发行人数据。

我使用的示例链接在这里:https://www.bourse.lu/security/XS1338503920/234821 我试图提取的数据是存储为文本的“发行者”下的名称;在这种情况下,它是“BNP Paribas Issuance BV”。

我尝试使用 vignette-description-content-text 类,但它似乎找不到任何数据,就像在查看汤时一样,并非所有的 html 都在拉。

我发现我当前的代码只拉取了一些 html,我不知道如何扩展它拉取的数据。

import requests
from bs4 import BeautifulSoup

URL = "https://www.bourse.lu/security/XS1338503920/234821"

page = requests.get(URL)

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

results = soup.find(id='ResultsContainer', class_="vignette-description-content-text")

我发现了类似的问题,并遵循了 link 1link 2link 3 中显示的指南,但使用的示例 html 似乎与我要抓取的网页大不相同。< /p>

我是否缺少提取和抓取数据的内容?

1 个答案:

答案 0 :(得分:0)

根据您的代码,我怀疑您正在尝试获取具有 class=vignette-description-content-textid=ResultsContaine 的元素。 class_ 是正确的使用方式,但不适用于 id

试试这个:

import requests
from bs4 import BeautifulSoup

URL = "https://www.bourse.lu/security/XS1338503920/234821"
page = requests.get(URL)
soup = BeautifulSoup(page.content, 'html.parser')

def applyFilter(element):
   if element.has_attr('id') and element.has_attr('class'):
      if "vignette-description-content-text" in element['class'] and element['id'] == "ResultsContainer":
         return True

results = soup.find_all(applyFilter)
for result in results:
   #Each result is an element here