python使用scrapy爬表格,爬虫中级
来源:互联网 发布:苹果手机变音软件 编辑:程序博客网 时间:2024/06/10 01:56
上一篇讲道了爬虫入门,这一篇介绍怎么使用爬虫框架来爬数据。框架用的是scrapy https://doc.scrapy.org/en/latest/。在开始动手之前,还是建议大家用pyenv和virtualenv隔离一下环境。当然如果觉得麻烦的话可以略过。
先把环境切到3.5.3,然后再切换包环境。我系统是没有安装scrapy的,所以要进行下面这两步。安装了scrapy的忽略它。看不明白我在说什么的也可以忽略它。pyenv local 3.5.3pyenv activate venv353
万事俱备了,可以开始了。写爬虫入门了以后,最困难的应该是调试。在这个阶段,需要学习http协议,要学习html,要学习CSS,还要学会各种字符编码知识,相信我,不会各种编码的话,迟早会一头栽进坑里好几天爬不上来,学习曲线一下变得很陡峭。还要会处理各种异常,至于框架本身的学习,倒不是太难的事情了。因为网上一搜一大把入门的博客,跟着做总能成功的。说了这么多,无非是在讲写爬虫要进阶需要的知识面。如果都不具备,那还是先看看这方面的书吧。
为了方便码农入门和调试,scrapy提供了一个叫shell的强大模式。用起来也很简单:scrapy shell url
scrapy会自动打开url,并且将返回放在一个叫response的对象里,在scrapy shell中可以直接访问。在shell中可以直接对它进行操作,方便码农调试各种正则表达式,还有DOM操作的表达式。
这里访问的是一个药材网站,上面有价格[同理可以把它换成某电商,某商城]。按惯例先上流星器开发者工具,上去检测一下。以找到想要的内容。探测到价格是在一个div里面,价格条目都是li元素。
定位到了要取的东西以后,下面是决定用什么方式来获取元素。如果只想取关键字,就推荐使用正则表达式;如果只取某一类,就推荐用css选择器;如果要取结构化的内容,就用xpath。因为要取表格,这里使用xpath。
到这scrapy的shell模式就介绍完成了,scrapy这个功能还是非常方便的。下面介绍一下怎么用scrapy建一个项目试试。
scrapy startproject spider
项目建好后会生成一个spider的目录,作为初学者,可以忽略items.py,还有pipeline.py。在spiders目录建一个文件,命名可自己来定,这里叫ZycSpider,这个类必须子scrapy.Spider的子类。类成员name必须唯一。parse方法必须要有的,要不然抓了不处理就没意义了不是。
#coding:utf-8import scrapyfrom spider.items import PriceItemclass ZycSpider(scrapy.Spider): name = "zyc" def start_requests(self): urls = ['http://www.zyctd.com/jiage/1-0-0.html'] for url in urls: yield scrapy.Request(url=url, callback=self.parse) pass pass #version1 def parse(self, response): page = response.url.split('/')[-2] filename = '%s.html' % page with open(filename, 'wb') as f: f.write(response.body) pass self.log('Saved file %s' % filename) #version2 def parse(self, response): price_tbl = response.xpath("//ul[@class='priceTableRows']") price_list = price_tbl.xpath("li") for i in price_list: price_detail = i.xpath("span//text()") [name,quality,from_where,price,future_move,week_up,month_up,year_up] = price_detail.extract() yield { 'name':name, 'quality':quality, 'from_where':from_where, 'price':price, 'future_move':future_move, 'week_up':week_up, 'month_up':month_up, 'year_up':year_up } pass pass
其中version1是把文件直接存下来,version2是解析后,吐出json。
代码写好以后,cd spidercrapy crawl zyc
结果就出来了。下一步就是完善这个代码,加上items.py,加上pipelines.py的功能。再加上页面内连接抓取。
- python使用scrapy爬表格,爬虫中级
- python爬虫之Scrapy 使用代理配置
- python爬虫 - scrapy的安装和使用
- python语言scrapy爬虫的使用
- python爬虫之Scrapy 使用代理配置
- python scrapy爬虫简单安装使用
- python爬虫scrapy框架灵巧使用
- Python爬虫Scrapy
- python爬虫scrapy
- Python 爬虫框架 scrapy
- python scrapy爬虫
- Python 启动 Scrapy爬虫
- python爬虫+scrapy安装
- python scrapy 爬虫
- Python+Scrapy 爬虫
- Python+Scrapy 爬虫配置
- python+scrapy+selenium爬虫
- Python爬虫Scrapy实践
- WPF DEV PieSeries2D扇形标识线变长充满
- HDU 2087 剪花布条【最长不重复子串】【KMP】【水题】【模板题】
- python居家旅行必备的pyenv,virtualenv
- HDU 6150 Vertex Cover 构造
- python试爬李毅吧贴子标题,爬虫最初级
- python使用scrapy爬表格,爬虫中级
- skynet源码分析(1)--模块加载
- org.springframework.beans.ConversionNotSupportedException异常解决方法
- skynet源码分析(2)--消息队列mq
- skynet源码分析(3)--消息名字和ID之handle
- Unix和Linux有什么区别? 通俗解释
- skynet源码分析(4)--monitor
- skynet源码分析(5)--消息机制之消息处理
- skynet源码分析(6)--消息机制之消息分发