用Python从网页中抓取表格
以下是指向示例播放器页面的链接: 下面是我从文本文件添加到基本url的播放器名称示例用Python从网页中抓取表格,python,html,csv,beautifulsoup,html-table,Python,Html,Csv,Beautifulsoup,Html Table,以下是指向示例播放器页面的链接: 下面是我从文本文件添加到基本url的播放器名称示例 这就是我想要为我的1000多名玩家的文本文件所做的,当你的问题中几乎没有上下文时,很难回答(到底什么不起作用,你到底想刮什么),但看看下面几行: from bs4 import BeautifulSoup from urllib import urlopen player_code = open("/Users/brandondennis/Desktop/money/CF_Name.txt").read(
这就是我想要为我的1000多名玩家的文本文件所做的,当你的问题中几乎没有上下文时,很难回答(到底什么不起作用,你到底想刮什么),但看看下面几行:
from bs4 import BeautifulSoup
from urllib import urlopen
player_code = open("/Users/brandondennis/Desktop/money/CF_Name.txt").read()
player_code = player_code.split("\r")
for player in player_code:
html =urlopen("https://www.capfriendly.com/players/"+player+"")
soup = BeautifulSoup(html, 'html.parser')
for section in soup.findAll('div',{"class": "table_c"}):
table = section.findChildren()[10].text
print player, table
由于append
返回None
这些行将引发异常
我相信他们应该是:
first_columns.append(row.findAll('td'))[0]
third_columns.append(row.findAll('td'))[2]
你的括号和括号好像放错地方了 这是你想要的吗
first_columns.append(row.findAll('td')[0])
third_columns.append(row.findAll('td')[2])
在这里,我不再在每个列表中插入所有td元素,然后选择[0]和[2]元素,不管怎样都会被丢弃。除了其他元素之外。请看这一行:
first_columns = []
third_columns = []
for row in rows[1:]:
first_columns.append(row.findAll('td')[0])
third_columns.append(row.findAll('td')[2])
在这里,BeautifulSoup
将尝试定位table_c
元素。但是,table_c
是一个类属性:
table = soup.findAll('table_c')[2]
或者,您可以通过id
直接进入表格:
table = soup.find_all(class_='table_c')[2]
一次只对一个玩家来说似乎效果不错,但当我切换到我的玩家列表文本文件时,我就遇到了麻烦。我认为如何解析文件是个问题,如果每行有一个播放器,只需在file对象上迭代,去掉任何空白:
table = soup.find("table", id="contractinsert")
我继续看到这个错误。(u'2018-19',u'$2750000')回溯(最后一次调用):文件“/Users/bd/Desktop/untitled-14.py”,第15行,在table=soup.findAll('table')[0]索引器中:列出索引range@denn9268用您正在执行的确切代码和您得到的确切错误更新您的问题。这段代码对我很有用:
从urllib导入urlopen;来自bs4进口美联;url='1〕https://www.capfriendly.com/players/patrik-elias'; soup=BeautifulSoup(urlopen(url));table=soup.findAll('table')[0]
对我来说同样适用于一个名字。当我试图从多个名称中提取时,我得到了错误代码。我已经更新了代码和名称示例列表。您能给出一个您期望的输出示例吗?@keatinge我希望最终将它们设置为csv格式,如网站上的表格格式。我有一个大约1000个名字的列表,我想得到。你想要什么表格?@padraiccnningham我想把所有的东西都带回2007-08年。目前,我只是想让代码适用于任何包含薪资信息的表。添加一个文件示例,就像您看到的一样。
table = soup.find("table", id="contractinsert")
from bs4 import BeautifulSoup
from urllib import urlopen
import csv
with open("/Users/bd/Desktop/testfolder/Player_Code_Test.txt") as f:
for player in map(str.strip, f)
html =urlopen("https://www.capfriendly.com/players/".format(player))