Python爬虫处理xml和html的字符串

在爬取网页时,有时候网页返回的数据是xml或者html片段,需要自己进行处理分析,在网上搜索了一下处理方法,这里总结一下。
首先给一个简单的“爬虫”:

import urllib2
def get_html(url,response_handler):
    response=urllib2.urlopen(url)
    return response_handler(response.read())

#crawl the page
get_html("www.zhihu.com/topics",html_parser)

以上就是获取单个页面的“爬虫”了,确实很简陋,但是也说明了爬虫核心过程:抓取网页和分析网页。
抓取网页的过程基本是固化的,我们的重点在response_handler里面,这个参数就是分析网页的方法,在一些流行的爬虫框架中我们主要需要完成的也是分析网页的过程。上面示例中使用的是xml_parser函数,不要以为有默认实现(其实并没有),下面我们来完成这个函数:

#使用lxml库来分析网页,此库的详细使用可以自行百度
import lxml.etree
def html_parser(response):
    page=lxml.etree.HTML(response)
    #这里使用了XPATH来取元素,XPATH用法自行百度
    for elem in page.xpath('//ul[@class="zm-topic-cat-main"]/li'):
        print elem.xpath('a/text()')[0]

我们使用了lxml.etree.HTML()载入网页的内容,返回的对象可以用xpath来取网页的元素,好像还支持CSS语法取元素,详细内容可以查阅相关文档。上面的分析函数完成的是打印所有分类的名称。

对于解析xml的字符串的方法,和上面类似,举例如下:

import lxml.etree
def xml_parser(response):
    page=lxml.etree.fromstring(response)
    #do what you want
    pass

暂时就这些

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值