python - BS4 网络抓取到 CSV 文件,我认为我抓取了太多行 ('tr' )s

标签 python web-scraping html-table beautifulsoup export-to-csv

我的网页抓取代码获取的数据行比我需要的多。我想抓取每个玩家的行,看起来这些“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)

最佳答案

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 的文档了解更多信息

关于python - BS4 网络抓取到 CSV 文件,我认为我抓取了太多行 ('tr' )s,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57650532/

相关文章:

python - 如何将python文件转换为linux可执行文件

python - 保存使用 keras 训练的 TF 模型,然后在 Go 中进行评估

python - 使用 Scrapy shell 抓取 JSON 文件时终端窗口自动关闭

html - 两个 block 级元素 1 个固定宽度 1 个在表格内拉伸(stretch)

html - 可滚动的div里面的内容,导致在IE中出现页面滚动条

python - numpy:对操作结果执行 "any"或 "all"的有效方法

python - 为在当前范围之外实现的 Python 函数定义变量

python - 用 Selenium python 刮取产品颜色

python - 即使使用真实浏览器的 header ,网站也会阻止curl

html - 表格行上的圆 Angular