我对编程还不熟悉,所以很有可能我的想法是做我想做的事情完全不是这样做的。在
我正在尝试从这个站点中获取排名表-http://www.flashscore.com/hockey/finland/liiga/-现在,如果我甚至可以用团队名称刮出一个列,那就没问题了,所以我试图找到类为“participant_name col_participant_name col_name”的td标记,但代码返回空括号:
import requests
from bs4 import BeautifulSoup
import lxml
def table(url):
teams = []
source = requests.get(url).content
soup = BeautifulSoup(source, "lxml")
for td in soup.find_all("td"):
team = td.find_all("participant_name col_participant_name col_name")
teams.append(team)
print(teams)
table("http://www.flashscore.com/hockey/finland/liiga/")
我尝试使用tr标记检索整行,但也没有成功。在
我认为这里的主要问题是您试图使用} 和^{} 或您认为更好的驱动程序,下面是使用上述两种工具的示例:
requests
来获取动态生成的内容,注意页面的HTML源代码中根本没有participant_name col_participant_name col_name
文本,这意味着这是由网站用JavaScript生成的。对于该工作,您应该使用类似^{我认为代码的另一个问题是您试图访问标记的方式,如果您想匹配特定的
class
或任何其他特定属性,那么可以使用Python的字典作为.findAll
函数的参数。在我们现在可以使用cd7来找到
^{pr2}$
teams
现在应该是所需的输出:teams
也可以使用列表理解创建:你很亲密。在
开始的时候不要那么雄心勃勃,只关注“参与者姓名”。看看https://www.crummy.com/software/BeautifulSoup/bs4/doc/#find-all。我想你想要的是:
另外,你看到的网页内容肯定和我不一样。在URL的
wget
之后,grep
在文本中根本找不到“参与者姓名”。您需要验证您的代码是否正在查找HTML文本中实际存在的ID或类。在阿吉亚先生比我先到了!我要指出的是,你可以单独使用硒。当然,他指出,这是众多动态加载大部分内容的网站之一。在
您可能有兴趣观察到我使用了xpath表达式。这些通常是表达你想要什么的简洁方式。一旦你习惯了,就不难读懂了。在
相关问题 更多 >
编程相关推荐