我要抓取的html表格的表格行中的一个表格条目如下所示:
<td class="top100nation" title="PAK">
<img src="/images/flag/flags_pak.jpg" alt="PAK"></td>
它所属的网页如下:http://www.relianceiccrankings.com/datespecific/odi/?stattype=bowling&day=01&month=01&year=2014。表格中此列所属的整个列具有相似的表格数据(即,它是一列图像)。
我正在python脚本中使用lxml。 (如果需要,可以选择使用BeautifulSoup。)对于表中的每个其他列,我可以使用'data = entry.text_content()'提取给定行上想要的数据。显然,这不适用于此列图像。但是我无论如何都不想要图像数据。我想从该表数据中获得的是'PAK'位-也就是说,我想要国家的名字。我认为这非常简单,但是很不幸,我是一个简单的人,他不了解他正在使用的库。
预先感谢
编辑:完整脚本,根据要求
import requests
import lxml.html as lh
import csv
with open('firstPageCricinfo','w') as file:
writer = csv.writer(file)
page = requests.get(url)
doc = lh.fromstring(page.content)
#rows of the table
tr_elements = doc.xpath('//tr')
data_array = [[] for _ in range(len(tr_elements))]
del tr_elements[0]
for t in tr_elements[0]:
name=t.text_content()
if name == "":
continue
print(name)
data_array[0].append(name)
#printing out first row of table, to check correctness
print(data_array[0])
for j in range(1,len(tr_elements)):
T=tr_elements[j]
i=0
for t in T.iterchildren():
#column is not at issue
if i != 3:
data=t.text_content()
#image-based column
else:
#what do I do here???
data = t.
data_array[j].append(data)
i+=1
#printing last row to check correctness
print(data_array[len(tr_elements)-1])
with open('list1','w') as file:
writer = csv.writer(file)
for i in range(0,len(tr_elements)):
writer.writerow(data_array[i])`
答案 0 :(得分:0)
与lxml
库一起,您将需要使用requests或其他库来获取网站内容。
在没有看到您到目前为止的代码的情况下,我可以提供BeautifulSoup解决方案:
url = 'http://www.relianceiccrankings.com/datespecific/odi/?stattype=bowling&day=01&month=01&year=2014'
from bs4 import BeautifulSoup
import requests
soup = BeautifulSoup(requests.get(url).text, 'lxml')
r = soup.find_all('td', {'class': 'top100cbr'})
for td in r:
print(td.text.split('v')[1].split(',')[0].strip())
输出约522个项目:
South Africa
India
Sri Lanka
...
Canada
New Zealand
Australia
England