Python Beautiful Soup未返回html表的列表

Python Beautiful Soup未返回html表的列表,python,python-3.x,beautifulsoup,Python,Python 3.x,Beautifulsoup,我正在尝试从下一页的表中提取描述、日期和url: 为了使我的代码与其他20个url保持一致,我需要有下面的逻辑,即整个主体的findall,然后通过循环找到适用的数据 问题是表体为空 import requests from bs4 import BeautifulSoup r = requests.get("https://www.fda.gov/safety/recalls-market-withdrawals-safety-alerts") c = r.content soup =

我正在尝试从下一页的表中提取描述、日期和url:

为了使我的代码与其他20个url保持一致,我需要有下面的逻辑,即整个主体的findall,然后通过循环找到适用的数据

问题是表体为空

import requests
from bs4 import BeautifulSoup

r = requests.get("https://www.fda.gov/safety/recalls-market-withdrawals-safety-alerts")

c = r.content

soup = BeautifulSoup(c,"html.parser")

all = soup.find_all("tbody") #whole table text THIS IS WHERE THE PROBLEM ORIGINATES

for item in all:
    print(item.find_all("tr").text) #test for tr text i.e. product description
    print(item.find("a")["href"]) #url
    print(item.find_all("td")[0].text) #date (won't work but can't test until tbody returns data

我做错了什么


提前谢谢

使用javascript从另一个页面动态加载该页面中的表。然后加载到熊猫数据帧中,完成以下操作:

import requests
import pandas as pd

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0',
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'Accept-Language': 'en-US,en;q=0.5',
    'X-Requested-With': 'XMLHttpRequest',
    'Connection': 'keep-alive',
    'Referer': 'https://www.fda.gov/safety/recalls-market-withdrawals-safety-alerts',
    'TE': 'Trailers',
}

params = (
    ('_', '1589124541273'),
)

response = requests.get('https://www.fda.gov/files/api/datatables/static/recalls-market-withdrawals.json', headers=headers, params=params)

response
df = pd.read_json(response.text)
然后,使用标准方法可以从表中提取目标信息


另一个选项,在本例中,

您可以使用Firefox-Developer Tools-Network嗅探web响应。 您将发现JSON url更干净,更容易解析


在您提供的链接上没有
tbody
属性,只有
body
。我建议您尝试使用
body
而不是
tbody
?我相信就在div class=“col-sm-12”下面我将
soup
转储到文本文件中,使用Ctrl-F我没有找到任何
tbody
referencei我认为你不会通过BeautifulSoup获得任何数据-数据似乎在数据表中-我假设这是一个javascript组件(不确定)。如果您确实选中了network选项卡,您将看到底层数据是一个json文件。你可以很容易地从那里提取你的数据@sammywemmy你是对的。我使用了下面杰克的解决方案。谢谢,这会有用的。我认为我的列表中有几个站点与此类似,因此我必须为类似的情况创建一个函数。