所以我正在努力学习拼抢,并想知道如何获取多个网页的信息。我在http://www.cfbstats.com/2014/player/index.html上使用它。我想检索所有球队,然后进入每个球队链接,显示名单,然后检索每个球员信息,并在他们的个人链接中他们的统计数据。
到目前为止我所拥有的是:
import requests
from bs4 import BeautifulSoup
r = requests.get("http://www.cfbstats.com/2014/player/index.html")
r.content
soup = BeautifulSoup(r.content)
links = soup.find_all("a")
for link in links:
college = link.text
collegeurl = link.get("http")
c = requests.get(collegeurl)
c.content
campbells = BeautifulSoup(c.content)
然后我从那里迷路了。我知道我必须在那里进行嵌套for循环,但我不想要某些链接,例如条款和条件以及社交网络。 只是试图获取玩家信息,然后尝试与他们的名字相关联的统计数据。
答案 0 :(得分:1)
您必须以某种方式过滤链接并将for
循环限制为与团队对应的循环。然后,你需要做同样的事情来获得玩家的链接。使用Chrome的“开发者工具”(或您的浏览器等效工具),我建议您(右键单击)检查您感兴趣的链接之一,然后尝试找到区别于其他不感兴趣的链接。例如,您将了解CFBstats页面:
所有团队链接都在<div class="conference">
内。此外,它们都包含"/team/"
中的子字符串href
。因此,您可以xpath到这样的div
中包含的链接,或者过滤带有这样的子字符串的链接,或者两者都过滤。
在团队页面上,玩家链接位于<td class="player-name">
。
这两个就足够了。如果没有,你就得到了要点。网络爬行是一门实验科学...
答案 1 :(得分:0)
不熟悉BeautifulSoup,但当然可以使用正则表达式来检索所需的数据。