最近在捣腾爬虫,比较习惯用 PyQuery 这个模块来解析 HTML 提取内容。简单看了一下文档,发现国内有些文档的写法是错的,自己试验了一下。
首先,循环一段内容比如循环我博客的文章标题,按照别人的文章来操作了一下发现是错误的。代码如下
import requests from pyquery import PyQuery as pq from lxml import etree try: response = requests.get("http://www.d0cs.org/", timeout=5).text doc = pq(etree.fromstring(response)) print type(doc('div#post-title>h1>a').text()) except Exception, e: print e打印结果得到 <type 'str'> 类型,说明提取标题的时候实则是 str 类型,并不是 list 类型或者 PyQuery 对象,如果循环输出的话得不到我要的结果。大部分在一些 CSDN 博客之类的文章基本是这样。
而正确的写法是这样的
import requests from pyquery import PyQuery as pq from lxml import etree try: response = requests.get("http://www.d0cs.org/", timeout=5).text doc = pq(etree.fromstring(response)) for title in doc('div#post-title>h1>a').items(): print title.text() + '\n' except Exception, e: print e这是查阅了官方 API 文档后操作的,不懂英文,还是要去看官方文档,起码有个翻译在。少走很多弯路的!
关于 PyQuery.items() 的文档