Scrapy 初窥笔记
来源:互联网 发布:唯品会显示网络未连接 编辑:程序博客网 时间:2024/06/06 02:05
scrapy startproject YourProjectName
建立scrapy项目
开始爬虫
scrapy crawl SpiderName
开始执行爬虫
以上仿麻烦
根目录新建执行文件from scrapy.cmdline import executeexecute(['scrapy', 'crawl', 'dingdian'])
顶点为spider的name
定义爬取的字段
就比如说爬小说
字段有 小说作者,小说内容等
Item文件下定义class DingdianItem(scrapy.Item): author = scrapy.Field() content = scrapy.Field()
如上,定义一定要继承Item
然后字段皆为Field(), 没有其他类型
比Django要方便的多开始写核心spider部分
spider以start_requests为初始函数,该函数必须yield一个可迭代对象
比如Request(url, call_back, meta)
参数说明url,即需要Request.get 的内容,call_back是一个parse函数,该函数可接受一个由刚才的get获取的response, meta是由上一个Request往这传的时候可以带上的参数parse 最终要yield 或 return 一个或多个 Item,来进行后续处理
这里有个巨大的
坑:
response尽量一次处理,不要在多个parse之间执行,因为所有的url,但凡被Request过,不会被二次请求,简单来说,url通常不能为response.url,如果你跟我一样踩到这个坑,注意这个解决方法
Scrapy的官方文档:
http://doc.scrapy.org/en/latest/topics/request-response.html#scrapy.http.Request
Request函数在文档中的定义:
class scrapy.http.Request(url[, callback, method=’GET’, headers, body, cookies, meta, encoding=’utf-8’, priority=0, dont_filter=False, errback])
在这儿, request的 dont_filter 设置为True就可以了
- Item被收集完成后,进入pipeline,
这里就进行最后的处理了,可以将Item的内容提取出来,进行数据库等的存储
模板:
class DingdianPipeline(object): def process_item(self, item, spider): # deferToThread(self._process_item, item, spider if isinstance(item, DcontentItem): url = item['chapterurl'] name_id = item['id_name'] num_id = item['num'] xs_chaptername = item['chaptername'] xs_content = item['chaptercontent'] Sql.insert_novel(name, content, name_id, num_id, url) print('小说存储完毕') return item
def process_item(self, item, spider):该方法必须重写,且return item此外,此函数通常功能即为去重后存储
以上为此次学习内容,差点一下午完成,踩坑踩两天
- Scrapy 初窥笔记
- scrapy学习笔记--scrapy命令
- scrapy使用笔记
- Scrapy 学习笔记(一)
- scrapy学习笔记--Items
- Scrapy爬虫框架笔记
- Scrapy爬虫笔记-未完成
- Scrapy框架学习笔记
- scrapy安装笔记
- Scrapy-学习笔记
- scrapy学习笔记
- scrapy学习笔记
- Scrapy学习笔记一
- Scrapy学习笔记
- scrapy使用笔记
- Scrapy学习笔记
- Python学习笔记-----Scrapy
- scrapy命令笔记
- python实现简单爬虫功能
- 2017.03.18【NOIP 普及组】模拟赛C组 T3:单元格
- Devexpress离线安装包下载!
- oracle DBCA安装数据库 实验
- 数据结构与算法分析:1-2章
- Scrapy 初窥笔记
- struts环境搭建
- Android保持屏幕常亮的三种方法
- mfc实现仿射和凯撒加密解密
- Core Java总结第三章
- django-语法备忘录
- Deep Learning(深度学习)学习笔记整理系列之(三)
- 输出n^n最右边的数的值
- 《编程之法》:寻找和为定值的多个数