无法从表中获取所有名称

问题描述 投票:0回答:2

我在python中创建了一个脚本,从网页中获取表中的所有名称。该表中的名称在页面源中可用,因此它们是static content。但是,当我尝试使用我的以下脚本时,我得到的很少(最多2012 Topps Heritage Run),而列表则更多。

Site address

如何使用请求从Company Sets标题下的表中获取所有名称?

我到目前为止尝试过:

import requests
from bs4 import BeautifulSoup

url = "https://www.psacard.com/psasetregistry/baseball/company-sets/16"

res = requests.get(url)
soup = BeautifulSoup(res.text,"lxml")
for item in soup.select(".dataTable tr td a[href*='/baseball/company-sets/']"):
    print(item.text)
python python-3.x web-scraping
2个回答
1
投票

你能尝试以下方法吗?

print([inner_tag.find('a').text for inner_tag in soup.findAll('table')[0].findAll('td') if inner_tag.find('a')])

说明:

  • 实际上页面中有两个表,您的代码从两个表中提取值。这就是你获得2012年最后一个价值的原因。
  • 上面的代码仅从第一个名为Company Sets的表中提取文本

0
投票

您可以将请求与pandas read_html结合起来

import pandas as pd
import requests
url = 'https://www.psacard.com/psasetregistry/baseball/company-sets/16'
headers = {'User-Agent' : 'Mozilla/5.0'}
r= requests.get(url, headers= headers)
tables = pd.read_html(r.content)
df = tables[0]
df.drop(df.index[[0]], inplace = True)
print(df)
© www.soinside.com 2019 - 2024. All rights reserved.