获取文本内容以外的html表数据(获取“ title”标签数据)

时间:2019-01-23 01:40:17

标签: html python-3.x web-scraping html-table

我要抓取的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])`

1 个答案:

答案 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