2014-09-05 139 views
1

我对使用python进行网页编程非常陌生。目前,我正在努力从网站上“刮”一小部分信息。 网站:http://www.airport-data.com/airport/HJO/#location 信息提取/废钢:“海拔”(下位置见&自我简介)从网页上刮 - python

的代码,我到目前为止有:

from BeautifulSoup import BeautifulSoup 
url2 = urllib2.urlopen('http://www.airport-data.com/airport/HJO/#location').read() 
soup = BeautifulSoup(url2) 
print soup #I did this just to see the content. 

我试着在网上阅读,看着以前的一些帖子但没有把我的头包裹起来。有关如何继续从网络链接中提取/提取“高程”的建议? 谢谢

回答

3

首先,根据BeautifulSoup project documentation

美丽的汤3已经被美丽的汤4

美丽的汤3只适用于Python的2.x的更换,但美丽汤4也 在Python 3.x上工作。美丽的汤4更快,有更多的功能, 和第三方解析器,如lxml和html5lib。你应该 使用美丽的汤4所有新项目。

安装BeautifulSoup 4-th version

pip install beautifulSoup4 

然后,想法是找到包含Elevation:文本标签,并得到the next sibling

import urllib2 
from bs4 import BeautifulSoup 

url2 = urllib2.urlopen('http://www.airport-data.com/airport/HJO/#location') 
soup = BeautifulSoup(url2) 

print soup.find('td', class_='tc1', text='Elevation:').next_sibling.text 

打印:

240 ft/73.15 m (Estimated) 
+0

谢谢为ans WER。我做了'soup.find('td',class _ ='tc0',text ='Longitude/Latitude:')。next_sibling.text',它正在提取内容。但是''经度/纬度:'有两条线'
'分开,我如何提取第二条线,即'
'后面的内容? (我可以通过字符串操作获得第二行,但是想知道我是否可以在没有字符串操作的情况下提取) – 2014-09-05 19:20:24

+0

@SrinGupta当然,'print soup.find('td',text ='Longitude/Latitude:')。next_sibling.contents [2 ]'应该这样做。 – alecxe 2014-09-05 19:29:59

+0

太棒了!谢谢 – 2014-09-05 20:22:04