用web si从lxml和python中抓取

时间:2015-02-21 11:08:20

标签: python-2.7 lxml

我想从网站中提取某些数据。 最初,我正在转换为.txt文件,然后在Python中编写一些例程来过滤/读出数据,这些数据对95%的数据起作用,这是不够的。我发现lxml有一种方法,我试过,但是没能成功。使用XPATH我想我标记了正确的位置,但是,我只得到空括号作为结果[]。如果有人知道如何纠正它,将不胜感激。

感谢。

彼得

from lxml import html
import requests
page=requests.get('http://www.finanzen.net/analyse/ING_Group_NV_overweight-JP_Morgan_Chase__Co__529284')
tree=html.fromstring(page.text)
unternehmen=tree.xpath('/html/body/div[1]/div[8]/div[2]/div[3]/div[4]/div[1]/div/div[2]/div[4]/div[2]/table/tbody/tr[1]/td[1]/br')
#This should fetch the information about unternehmen

print unternehmen

1 个答案:

答案 0 :(得分:0)

该页面源代码很乱。很少id个属性和许多匿名 <div>。您可以使用id属性获取最近的元素,转到其父级,即保留要提取的元素的表的根。以下xpath表达式对我有用。试一试:

response.xpath('//a[@id="commentLink"]/ancestor::div[4]/div[2]/div[4]/div[2]/table/tr/td[1]/text()')[0]

它产生:

u'ING Group NV'

最后一个[0]是因为很难解析非关闭的<br>标记而td列检索三个文本元素,所以我只得到第一个。你必须根据自己的需要进行调整。