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