我试图用这个Python sintax从url:http://www.dlib.org/dlib/november14/beel/11beel.html抓取html内容:
s="http://www.dlib.org/dlib/november14/beel/11beel.html"
content = requests.get(s)
tree = html.fromstring(content.text)
titoli = tree.xpath('/html/body/form/table[3]/tr/td/table[5]/tr/td/table[1]/tr/td[2]/h3/text()')
par = tree.xpath('/html/body/form/table[3]/tr/td/table[5]/tr/td/table[1]/tr/td[2]/p/text()')
articoli = json.dumps({'titoli':titoli,'contenuti':par})
print ("Content-type: json")
print
print (articoli)
主要的请求是找到一个XPath查询来返回每个标签,标签内容和页面最有用的div内的文本,可以通过以下路径找到它/html/body/form/table[3]/tr/td/table[5]或使用web inspector在评论行下:!--内容表--。 由于我之前发布的代码不可能获得div的全部内容,只能获取p div中的标题和文本,现在我找不到其他方法了。在
要使用Python/XPath获取网站某一部分的实际HTML内容,使用}更容易。当您设置元素树时,有一个函数允许您返回元素的HTML内容,而不仅仅是返回文本内容(如您所述)。您的代码如下:
from lxml import etree
而不是{tree.xpath
返回所选元素的列表。在本例中,因为您使用的是特定的XPath,所以它返回一个只包含一个元素的列表。因此,我们必须使用etree.tostring(element[0])
来访问列表的第一个元素,并以字符串的形式返回元素的HTML内容。在相关问题 更多 >
编程相关推荐