BS4网站抓取CSV文件,认为我抓取太可能行('tr')

2024-06-02 05:05:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我的webscrape代码获取的数据行比我需要的多。我想抓住每个球员行,看起来像这些“tr”所有包括:你知道吗

<tr class="diff-row evTabRow bc"  

另外,我想获取的TD数据是以下内容:-
数据odig=
从下表列表数据:-你知道吗

<td class="bc bs o" data-bk="B3" data-odig="9" data-o="8" data-hcap="" data-fodds="9.0" data-ew-denom="4" data-ew-places="5" xpath="1"><p>9</p></td>

代码正在拾取
数据o=
td对我来说是有问题的,有时用分数表示。你知道吗

有什么建议吗

我是新的编码,python我的第一次尝试。 我的代码主要是根据我从youtube上获得的内容编写的,并复制了其他试图满足我需要的内容。我尝试过编辑,以明确要包含的表行和数据的类型,但找不到有效的答案(大量语法错误)。我怀疑我有一两条线什么也没做。你知道吗

url = 'https://www.oddschecker.com/golf/the-masters/2020-us-masters/winner'

r = requests.get(url,headers = header)
soup = BeautifulSoup(r.text,'lxml')
table = soup.findAll("table")[1]

rows_list = []

for rows in table.findAll('tr'):
    cell_list = []
    for cell in rows.findAll('td'):
        text=cell.text
        cell_list.append(text)
    rows_list.append(cell_list)

Tags: 数据代码textdatatablecelltrlist
1条回答
网友
1楼 · 发布于 2024-06-02 05:05:37

find()findAll()/find_all()可以获取其他参数来筛选结果

findAll('tr', {'class': 'diff-row evTabRow bc'})

或者

findAll('tr', class_='diff-row evTabRow bc')

如果属性必须存在,但可能有不同的值,则可以使用True

findAll('td', {'data-o': True})

有关BeautifulSoup的详细信息,请参阅文档

相关问题 更多 >