我试图从一个网页(A)中刮取数据点,但随后从每个数据点自己的网页中刮取数据,并将所有数据合并到单个数据框中以便于查看
这是一个包含四列的每日数据框架:Team、Pitcher、ERA、WHIP。在特定投手的url中可以找到ERA和WHIP。对于下面的数据,我已经设法把球队的名字和首发投手的名字划入一个数据框(尽管不正确)
import requests
from bs4 import BeautifulSoup
import pandas as pd
import re
targetUrl = 'http://www.baseball-reference.com/previews/'
targetUrl_response = requests.get(targetUrl, timeout=5)
soup = BeautifulSoup(targetUrl_response.content, "html.parser")
teams = []
pitchers = []
for i in soup.find_all('tr'):
if i.find_all('strong'):
for link in i.find_all('strong'):
if not re.findall(r'MLB Debut',link.text):
teams.append(link.text)
if i.find_all('a'):
for link in i.find_all('a'):
if not re.findall(r'Preview',link.text):
pitchers.append(link.text)
print (df)
我想添加代码跟踪每个投手的网页,刮时代和鞭子,然后修改数据到同一个数据框作为球队和投手的名字。这有可能吗
目前产量:
0
Aaron Sanchez TOR
CC Sabathia NYY
Steven Matz NYM
Zach Eflin PHI
Lucas Giolito CHW
Eduardo Rodriguez BOS
Brad Keller KCR
Adam Plutko CLE
Julio Teheran ATL
Jon Lester CHC
Clayton Kershaw LAD
Zack Greinke ARI
Jon Gray COL
Drew Pomeranz SFG
几乎没有什么不经意的事情(请看我在那里做了什么:-)sports-reference.com页面是动态的。您可以直接拉一些表,但是如果有多个表,您可以在html源代码的注释标记下找到它们。因此,如果您希望从页面中获得更多数据,这可能是以后的问题
第二件事是我注意到你正在拉
<tr>
标签,这意味着有<table>
标签,熊猫可以为你做繁重的工作,而不是用bs4迭代。这是一个简单的pd.read_html()
函数。然而,它不会拉出那些链接,只是严格的文本。因此,在本例中,使用BeautifulSoup进行迭代是一种可行的方法(我只是提到它以供将来参考)还有更多的工作要做,因为有几个家伙没有链接/返回时代或鞭子。如果一个球员被交易或者改变了联赛,你也必须考虑到,2019年的同一个赛季可能会有多个时代。但这应该会让你走:
输出:
相关问题 更多 >
编程相关推荐