我正在运行的某些代码有问题。这是为了提取并最终创建网站上的名称列表。这是为了捕获以下名称:
<th class="left " data-append-csv="David-Cornell" data-stat="player" scope="row"><a href="/en/players/0c9aad01/David-Cornell">David Cornell</a></th>
现在,我已经创建了捕获所有这些实例的代码,但是,即使我在代码中使用find实例捕获下一个标记,我也会在此方面遇到错误。我怀疑有一种方法可以解析接收到的文本,但就目的而言,这会很多,尤其是当页面很多时。
from bs4 import BeautifulSoup as bsoup
import requests as reqs
page = reqs.get("https://fbref.com/en/squads/986a26c1/Northampton-Town")
parsepage = bsoup(page.content, 'html.parser')
findplayers = parsepage.find_all('th',attrs={"data-stat":"player"}).find_next('a')
print(findplayers)
所以我一生都无法捕获下一个标记-我已经尝试了一系列迭代,而运行此代码时出现的错误如下:
AttributeError:ResultSet对象没有属性'find_next'。你是 可能将项目列表像单个项目一样对待。你打过电话吗 当您打算调用find()时使用find_all()?
如何解决此问题?
答案 0 :(得分:0)
find_all
给出了包含许多元素的列表,您必须分别对每个元素使用find_next
。您必须使用for
-循环
from bs4 import BeautifulSoup as bsoup
import requests as reqs
page = reqs.get("https://fbref.com/en/squads/986a26c1/Northampton-Town")
parsepage = bsoup(page.content, 'html.parser')
finndplayers = parsepage.find_all('th',attrs={"data-stat":"player"})
for item in findplayers:
print( item.find_next('a') )
答案 1 :(得分:0)
您可以更改选择器,并使用select
执行以下操作
players = [item.text for item in parsepage.select('#stats_player tbody th')]
名称全部在ID为th
的表主体(tbody
)的stats_player
中
或者
#stats_player th.left a
这些方法比使用诸如以下属性的替代方法要快一些:
#stats_player [data-append-csv]