python - 如何在网上刮掉所有击球手的名字?
问题描述
我想抓取 2018 年所有 MLB 击球手的统计数据。这是我到目前为止的代码:
#import modules
from urllib.request import urlopen
from lxml import html
#fetch url/html
response = urlopen("https://www.baseball-reference.com/leagues/MLB/2018-standard-batting.shtml")
content = response.read()
tree = html.fromstring( content )
#parse data
comment_html = tree.xpath('//comment()[contains(., "players_standard_batting")]')[0]
comment_html = str(comment_html).replace("-->", "")
comment_html = comment_html.replace("<!--", "")
tree = html.fromstring( comment_html )
for batter_row in tree.xpath('//table[@id="players_standard_batting"]/tbody/tr[contains(@class, "full_table")]'):
csk = batter_row.xpath('./td[@data-stat="player"]/@csk')[0]
当我刮掉所有的击球手时,每个名字都附有 0.01。我尝试使用以下代码删除附加的数字:
bat_data = [csk]
string = '0.01'
result = []
for x in bat_data :
if string in x:
substring = x.replace(string,'')
if substring != "":
result.append(substring)
else:
result.append(x)
print(result)
此代码删除了数字,但是,仅打印了姓氏:
输出:
['Zunino, Mike']
此外,名称周围有括号和引号。名字也是倒序的。
1) 如何打印所有击球手的姓名?
2)如何删除引号和括号?
3) 我可以颠倒姓名的顺序,以便先打印名字然后再打印姓氏吗?
我希望的最终输出将是所有击球手的名字:Mike Zunino。
我是这个网站的新手......我也是抓取/编码的新手,非常感谢我能得到的任何帮助!=)
解决方案
1) 打印所有击球手名称
print(result)
这将打印结果对象中的所有内容。如果它没有打印您期望的内容,那么还有其他问题。
2)删除引号 括号是由于它是一个数组对象。尝试这个...
print(result[0])
这将告诉解释器在 0 索引处打印结果。
3) 名字倒序
尝试
name = result[0].split(“ “).reverse()[::-1]