用Python从网页中抓取表格

用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(

以下是指向示例播放器页面的链接:

下面是我从文本文件添加到基本url的播放器名称示例


这就是我想要为我的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))