【发布时间】:2019-06-16 13:12:27
【问题描述】:
我试图抓取的 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])`
【问题讨论】:
-
您能否附上您目前使用的代码,以便我们了解从哪里开始?
-
很确定其余代码无关紧要,但可以肯定,我会发布它
标签: html python-3.x web-scraping html-table