使用python的pyquery模块解析csdn个人博客的标题和描述

最近新学习了一个模块pyquery,用来解析html效果那是挺好的,可惜的是也有缺点,不能解析正文嵌套的其他格式,但是一般的获取信息那是不在话下的。
下面直接上脚本,挺简单的一个脚本

备注:因为直接用PyQuery的构造函数传入url csdn就不认识我了,所以直接伪造一个user-agent了,然后用了重载的传入string的方式,大部分网站还是支持直接传入url的。

好了,要解析的网址是:http://blog.csdn.net/cloud_huan

然后浏览器右键查看源码,查找到标题的关键字段为:

<div class="list_item article_item">
        <div class="article_title">   
         <span class="ico ico_type_Original"></span>


    <h1>
        <span class="link_title"><a href="/cloud_huan/article/details/47777129">
        <font color="red">[置顶]</font>
        一个测试的Android学习笔记 12.23            
        </a></span>
    </h1>
</div>

然后是描述的关键字段:

 <div class="article_description">
咳咳,手机测试已经有一年了,本人的意愿也是希望能在手机软件测试一直走下去。回想上一年在腾讯外包的日子,甜酸苦辣都有,但更多的是收货了...
本片不是总结啦,只是一个展望,毕竟,没有方向,没有目标是成不了大事的,或者,总要追求点什么...技术的路,最重要的是分享和总结,于是工作第二年,下定决定要写点什么,鉴于本人的技术低下,懒惰,完全是没有欲望写博文的...直到看到老罗的Android之旅,心中突...        </div>

所以分析之后,生成一个PyQuery对象,然后用类的选择条件筛选文本快内容,最后因为有很多个标题,所以循环读取赛选结果,取得每一篇文章的标题和描述。

最后的完整文件如下:

# _*_ coding:utf-8 _*_

from pyquery import PyQuery as pq
import urllib2

t = []
d = []
#csdn不让直接解析,会403,所以伪造了http请求头
head_req = {'User-Agent':'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)'}
req = urllib2.Request("http://blog.csdn.net/cloud_huan",headers=head_req)
result = urllib2.urlopen(req).read()
doc = pq(result)
#查找类名为article_title,返回一个PyQuery对象
doc_title = doc('.article_title')
#这里迭代PyQuery出来的是<class 'lxml.html.HtmlElement'>就是html元素了
for i in doc_title:
    title = pq(i).text()
    t.append(title)
doc_des = doc('.article_description')
for i in doc_des:
    des = pq(i).text()
    d.append(des)
for i in range(0,len(t)):
    print t[i],'---',d[i]
    print '*********************'

你可能感兴趣的:(python)