python爬虫提取信息:正则表达式和xpath
来源:互联网 发布:大数据时代的营销 编辑:程序博客网 时间:2024/05/17 07:45
爬虫主要是两个功能,一是访问网页,二是从网页中提取数据。事实上访问网页基本都是调用接口直接就可以访问,而从网页中正确地提取数据是主要工作量所在。
这里给出两种提取数据的选择和用到的相关库。
先说说两种方法的特点:
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
(我懒,就不自己重新总结一遍了。。。就和写程序一样,能调接口的绝不自己编)
- python爬虫提取信息:正则表达式和xpath
- python爬虫里信息提取的核心方法: Beautifulsoup、Xpath和正则表达式
- Python网络爬虫与信息提取(三) 正则表达式
- Python网络爬虫与信息提取-Day11-正则表达式的概念和语法
- Python爬虫---数据的提取---正则/Xpath/beautifulsoup--正则
- Python网络爬虫与信息提取-Day12-Re(正则表达式)库入门
- 用python写网络爬虫-使用xpath代替正则表达式
- python爬虫和正则表达式
- python爬虫学习(1)--关于正则表达式输入和提取中文
- python正则表达式和自制爬虫
- python网络爬虫-正则表达式和BeautifulSoup
- 介绍requests+threading多线程爬虫,提取采用xpath 和正则两种,介绍线程锁
- Python爬虫 正则表达式
- Python爬虫-正则表达式
- python爬虫-正则表达式
- 用正则表达式提取信息
- Python网络爬虫和信息提取(一)
- Python爬虫之正则表达式
- 2017全球运维技术大会 12大技术专场等你来!
- 硬件三人行,运放基础第2讲听课笔记,电路分析基础(一)
- Beego应用开发02
- 数据库学习笔记(SQL语句)
- python
- python爬虫提取信息:正则表达式和xpath
- 单词小助手
- onSaveInstanceState调用时机以及fragment commit的时机
- Bootstrap框架
- PHP使用phpqrcode类库生成二维码
- MATLAB中不用循环生成圆盘(圆形)/圆环掩膜矩阵
- 进军C++的世界
- JavaScript中的匿名函数及函数的闭包
- APP登录功能的Java服务端开发