python爬虫提取信息:正则表达式和xpath

爬虫主要是两个功能,一是访问网页,二是从网页中提取数据。事实上访问网页基本都是调用接口直接就可以访问,而从网页中正确地提取数据是主要工作量所在。


这里给出两种提取数据的选择和用到的相关库。

先说说两种方法的特点:

python正则表达式:速度快,一整篇html能够用一句简短的正则表达式解决。但是有的html用正则表达式取到的数据会混乱(多个段落符合正则表达式,但是其中有的数据并不是我们想要提取的)。另外,下文推荐的python库request和re很简单。


xpath:xpath对xml格式的东西解析比较规范,基本上能做到你想要哪个数据就取哪个数据。但是要对xml格式有精确的了解。可以用lxml对xml解析。


scrapy应该还有一些别的爬虫优势我不知道的,比如其settings.py文件中应该可以伪装浏览器信息等,以后再研究。


下面就给出两种方法的具体操作用法吧:

1.python正则表达式:正则表达式语法规则参考 http://www.cnblogs.com/fnng/archive/2013/05/20/3089816.html

主要用到的函数是request.get()(请求网站)和re.findall()(正则表达式)

这里贴出一个小函数

def extractDataOutPutList(RegExp,web):
    content = re.findall(RegExp, web)
    if content:
        content = [re.sub(u'[ \n\r\t\u3000]+', ' ', re.sub(u'<.*?>|\xa0', ' ', unescape(t))).strip() for t in content]
    return content


 [re.sub(u'[ \n\r\t\u3000]+', ' ', re.sub(u'<.*?>|\xa0', ' ', unescape(t))).strip() for t in content]这个是从大苏神的网站(http://spaces.ac.cn/category/Big-Data/)上面抄的,是个很不错的过滤出汉字的条件
RegExp需要填写正则表达式,例如糗百抓笑话内容可以用 RegExp='<div class="content">([\s\S]*?)</div>',每个网站都不同需要尝试。。。在下经常是连蒙带猜写出来的。。


2.xpath。xpath的话推荐使用scrapy进行爬取。用lxml结合request也能进行xpath解析。

scrapy的爬取运行方式和一般python文件不同。

这里也推荐一个写得很好的博客 http://www.shareditor.com/blogshow/?blogId=43 

(我懒,就不自己重新总结一遍了。。。就和写程序一样,能调接口的绝不自己编)


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值