尝试使用python和bs4从特定'td'内抓取所有'a'文本

亚历克斯

我正在尝试抓取https://www.betexplorer.com/soccer/england/premier-league/fixtures/来提取'a'标记中包含的文本,特别是在带有“ table-main”类的表中,然后针对其中的每一行。第一个td包含带有两个团队名称的文本,其td类为“ h-text-left”。不确定问题是否出在我的循环中,但是我收到的错误消息似乎是我在循环的最后一行中错误地使用了bs4。

我可以使用“ table-main”类刮擦表中的每个tr,然后使用“ h-text-left”类刮擦每个td。但是,当我尝试仅提取“ a”元素而不是“ a”文本时,我遇到了麻烦。

import requests
from bs4 import BeautifulSoup

headers = {'User-Agent':
           'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36'}

r = requests.get('https://www.betexplorer.com/soccer/england/premier-league/fixtures/', headers=headers)

c = r.content

soup = BeautifulSoup(c)

fixture_table = soup.find('table', attrs = {'class': 'table-main'})

for tr in soup.find_all('tr'):
    match_tds = tr.find_all('td', attrs = {'class': 'h-text-left'})
    matches = match_tds.find_all('a')

当我尝试查找所有'a'标签时,最后一行会跳出以下错误:

...     matches = match_tds.find_all('a')
...
Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
  File "C:\Users\Glypt\AppData\Local\Programs\Python\Python36-32\lib\site-packages\bs4\element.py", line 1884, in __getattr__
    "ResultSet object has no attribute '%s'. You're probably treating a list of items like a single item. Did you call find_all() when you meant to call find()?" % key
AttributeError: ResultSet object has no attribute 'find_all'. You're probably treating a list of items like a single item. Did you call find_all() when you meant to call find()?
>>>
QHarr

您可以使用单个类将其缩减为更快的选择器方法。所有链接具有相同的类名,因此您可以select在列表推导中将其传递给,以为您提供所有链接。

import requests
from bs4 import BeautifulSoup
r = requests.get('https://www.betexplorer.com/soccer/england/premier-league/fixtures/')
soup = BeautifulSoup(r.content, 'lxml')
matches = [item['href'] for item in soup.select('.in-match')]

赔率

import requests
from bs4 import BeautifulSoup
r = requests.get('https://www.betexplorer.com/soccer/england/premier-league/fixtures/')
soup = BeautifulSoup(r.content, 'lxml')
odds = [item['data-odd'] for item in soup.select('.table-main__odds [data-odd]')]
print(odds)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python和BS4 | 获取具有特定文本内容的所有表数据

如何使用css和td内的特定文本选择表内的td元素

尝试设置 td 文本

Python BS4抓取表在<td>标签中具有多个值

Python 中的 td 文本

如何使用 bs4 在 <font> 中获取 <td> 中的文本?

跳过<td>标记内的特定文本,python beautifulsoup

如何抓取链接和链接使用BS4将文本显示到字典中

使用 Requests bs4 Python3.8 从长元素中抓取文本

有没有办法使用 bs4 获取具有特定属性的标签内的文本?

查找带有特定文本的<td>标签值(Beautiful Soup)

如何删除具有包含特定文本的TD的TR

Python / bs4:div标签内的跨度-文本提取

如何使用 Python BS4 访问 HTML <p> 标签内的文本

如何使用JavaScript在具有ID的td中插入文本

使用select获取td文本

如何在文本区域中使用所有td空间?

如何使用循环从表中抓取数据以使用python获取所有td数据

对齐表格,居中对齐(td),将文本留在td内

仅附加/查找具有属性或文本包含 Python BS4 特定字符串的元素的最佳实践?

使用 python 和 bs4 进行网页抓取

如何对齐<td>内剩余的跨度文本?

访问td元素中的所有输入/文本框

带有BS4和urllib的Python-从网站提取后如何移动/操作文本

如果文本是数字,如何将函数应用于所有 <td> 标签内的文本?

Python - 从 <td class = "text">Need This Text</td> 中提取文本

在带有标题文本 Python/bs4 的动态类之后获取文本

BS4 在遵循模式的 <p> 标签之间抓取文本

重复时删除特定的 td 文本