我想制作所选元素物理性质的表格(例如雾化焓,汽化焓,汽化热,沸点),可在this page上获取。
手动完成这是一个巨大的痛苦,我没有在互联网上找到任何其他机器处理友好的此类数据来源。
我试图学习如何在Python中完成它(因为我想将这些数据用于我用Python / NumPy / Pandas编写的其他代码)。
我能够使用urllib2下载网页HTML代码,我试图学习如何使用像ElementTree或MiniDom这样的HTML / XML解析器。但是我没有Web编程和HTML / XML处理的经验。
答案 0 :(得分:0)
使用lxml的xpath支持,您可以轻松地解析数据。这是一个解析雾化焓的例子
import lxml.html
import urllib2
html = urllib2.urlopen("http://http://environmentalchemistry.com/yogi/periodic/W.html").read()
doc = lxml.html.document_fromstring(html)
result = doc.xpath("/html/body/div[2]/div[2]/div[1]/div[1]/ul[7]/li[8]")
您可以为不同的元素动态生成xpath字符串,并使用dict来解析require字段。
答案 1 :(得分:0)
谢谢你,raphonic
有必要稍微修改你的代码以使其工作,但感谢kickstart。这段代码正在运行:
import lxml.html
import lxml.etree
import urllib2
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
infile = opener.open('http://environmentalchemistry.com/yogi/periodic/W.html')
html = infile.read()
doc = lxml.html.document_fromstring(html)
result = doc.xpath("/html/body/div[2]/div[1]/div[1]/div[1]/ul[7]/li[8]")
print lxml.etree.tostring(result[0])
但可能不是最好的
反正。因为不同元素的页面结构不完全相同,我可能只使用简单的 string.find()和常规扩展。喜欢这个
import urllib2
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
infile = opener.open('http://environmentalchemistry.com/yogi/periodic/W.html')
page = infile.read()
i = page.find("Heat of Vaporization")
substr = page[i:i+50]
print substr
import re
non_decimal = re.compile(r'[^\d.]+')
print non_decimal.sub('', substr)