0

我一直在尝试从一个站点获取信息,最近发现它存储在 childNodes[0].data 中。我对 python 很陌生,从未尝试过针对网站编写脚本。

有人告诉我,我可以制作一个 tmp.xml 文件,并从那里提取信息,但由于它只获取源代码(我认为这对我没有用),我没有得到任何结果。

当前代码:

response = urllib2.urlopen(get_link)
html = response.read()
with open("tmp.xml", "w") as f:
    f.write(html)
dom = parse("tmp.xml")
name = dom.getElementsByTagName("name[0].firstChild.nodeValue")

我也试过使用 'dom = parse(html)' 没有更好的结果。

4

1 回答 1

0

getElementsByTagName()采用元素名称,而不是表达式。您正在加载的页面中极不可能有包含标签的<name[0].firstChild.nodeValue>标签。

如果您正在加载 HTML,请改用 HTML 解析器,例如BeautifulSoup。对于 XML,使用ElementTree API比使用(过时且非常冗长的)DOM API 容易得多。

这两种方法都不需要您首先将源保存到磁盘,这两种 API 都可以直接从urllib2.

# HTML
import urllib2
from bs4 import BeautifulSoup

response = urllib2.urlopen(get_link)
soup = BeautifulSoup(response.read(), from_encoding=response.headers.getparam('charset'))

print soup.find('title').text

或者

# XML
import urllib2
from xml.etree import ElementTree as ET

response = urllib2.urlopen(get_link)
tree = ET.parse(response)

print tree.find('elementname').text
于 2013-11-09T20:27:11.473 回答