下面一段程序是从http://blog.csdn.net/lizhongkan页面抽取博客标题的python脚本:
import urllib
import urllib2
from lxml import etree
# 由于csdn不允许直接urllib2.urlopen抓取页面(否则返回403),故这里需要设定UserAgent。
class CsdnLoader(urllib.FancyURLopener):
version = "Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11"
url = "http://blog.csdn.net/lizhongkan"
loader = CsdnLoader()
text = loader.open(url).read()
#print text
html = etree.HTML(text)
spans = html.xpath("//span[@class='link_title']/a[@title]")
for a in spans:
print a.text
这段xpath表达式"//span[@class='link_title']/a[@title]"的意思是:
1. "//span[@class='link_title']"意思就是找出页面所有属性class等于link_title的span元素。
2. "//span[@class='link_title']/a[@title]"的意思就是:在满足条件1的span元素下的拥有title属性的所有a标签。