我有一个问题,我已经找到了答案,但它的编码方式似乎有点挥之不去,有点资源密集。想看看是否有一种方法,我在概念上认为应该工作,但无法正确编码。你知道吗
问题在于以下代码:
from bs4 import BeautifulSoup as bsoup
import requests as reqs
pagetoparse = 'https://fbref.com/en/squads/986a26c1/Northampton-Town'
page = reqs.get(pagetoparse)
status = page.status_code
parsepage = bsoup(page.content, 'html.parser')
playerlist = []
positionlist = []
agelist = []
# Create playerlist - unique instances
findplayers = parsepage.find_all('th',attrs={"data-stat":"player"})
for player in findplayers:
addplayer = player.find_next('a').get_text()
if addplayer not in playerlist and addplayer != 'coverage note':
playerlist.append(addplayer)
# Create positionlist - non-unique
findinfo = parsepage.find_all('td',attrs={"data-stat":'position'})
for position in findinfo:
addposition = position.get_text()
if addposition != 'coverage note':
positionlist.append(addposition)
# Create positionlist - non-unique
findinfo = parsepage.find_all('td',attrs={"data-stat":'age'})
for age in findinfo:
addage = age.get_text()
if addage != 'coverage note':
agelist.append(addage)
目前我所做的是这样的,这是可行的,但是问题是我更喜欢在索引中运行整个data stat选项:
toparse=['player'、'position'、'age']等
然而,我无法实现这一点的地方是,将这些单独的索引成员添加到各自的列表中。我可以构造一个for循环来实现这一点,但它们最终都位于相同的索引中。在自己的列表中运行data stat变量时,您能帮助使列表也更改为下一个吗?即代码将列表从playerlist交换到position list等?你知道吗
我已经设法分别运行代码来实现这一点。然而,它缺乏灵活性,而且我想说,它变得有点太长,无法管理。你知道吗
使用
find_next
函数获取下一个元素more details订单号:
相关问题 更多 >
编程相关推荐