我一直试图从网站获取信息,最近发现存储在childNodes [0] .data中。 我是python的新手,从未尝试过针对网站编写脚本。
有人告诉我,我可以创建一个tmp.xml文件,并从那里提取信息,但由于它只获取源代码(我认为这对我没有用),所以我没有&#39 ;得到任何结果。
当前代码:
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)'没有更好的结果。
答案 0 :(得分: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