scrapy Crawl_spider
命令行输入:scrapy genspider --list 可以看到scrapy给我们提供的爬虫模板:
basic
crawl
csvfeed
xmlfeed
一般都是用默认模板生成的spider,如果需要选择模本可以用命令:
scrapy genspider -t crawl ....
关于pacharm中python的模块导入问题,正在编辑的模块如果希望作为导入模块的根目录可以右键项目文件然后如下图:

这样就可以直接导入项目中的文件作为模块了。
但是有个问题:如果是使用命令行模式的话,就不会自动将当前的项目文件夹作为root source, 于是可以通过自己进入settings文件(因为settings是scrapy命令的主入口)中设置。
import sys
sys.path.insert(0, '项目所在目录') # 第一个参数为优先级
但是此种方式添加的是绝对路径,可以用一种更加灵活的方式处理此问题:
import os
import sys
base_dir=os.path.dirname(os.path.abspath(os.path.dirname(__file__)))
sys.path.insert(0, os.path.join(base_dir, '当前项目名称')) #将路径加入到python path当中。使其可以直接import
crawlspdier
一些函数:
rules
爬取的规则属性,包含一个或多个Rule对象的列表,每个Rule都对爬取网站的动作做了定义,Criwlspider将读取rules每一个Rule并进行解析
parse_start_url(),是一个可重写的方法,当start_urls里面对应的Request返回Response时,该方法被调用,它会分析Response并返回item或者Request对象。
Rule 定义:
def __init__(self, allow=(), deny=(), allow_domains=(), deny_domains=(), restrict_xpaths=(),
tags=('a', 'area'), attrs=('href',), canonicalize=False,
unique=True, process_value=None, deny_extensions=None, restrict_css=(),
strip=True):
allow 是一个正则表达式列表,定义从当前页面提取符合匹配的链接。deny相反,allow_domains定义了域名,只有符合该域名的才跟进。deny_domains相反,restrict_xpath和restrict_xpath表示限定allow查找的区域。tags=('a', 'area')表示从哪些标签中找链接。attrs=('href'),从标签中找什么属性的链接。callback:回调函数,每次提取到连接时候,调用该函数,注意要避免使用parse作为回调函数。因为Crawlspider使用的parse()方法来实现其逻辑的,如果覆盖了parse()方法,Crawlspider将运行失败。
ca_kwargs:字典,包含传递给回调函数的参数。
follow:指定提取的链接是否需要跟进。如果callback参数为None,则follow默认为Ture,否则默认为False
process_links:指定的处理函数,从Llink_extract中获取到连接时候,被调用,主要用于判别链接和过滤。
process_reuquest:指定处理函数,跟进该Rule提取到的每个Ruquest时,该函数被调用,对Request进行处理,返回Request或者None
关于 itemloader
item loader 中的 rom scrapy.loader.processors import TakeFirst
TakeFirst()的用法为从列表中间取出第一个非空值,注意不是第一个值,而是非空值。
Compose
用给定多个函数组合构成processor,每个输入值传入到一个函数,在输出到第二个函数,类推,
Mapcompose
与compose类似,迭代处理一个列表值中的所有元素,遍历然后依次处理。
SelectJmes
用于查询json中的元素,传入key,返回value。不过需要先安装jmespath包
安装之后就可以使用这个processor了。
实例如下:
from scrapy.loader.processors import SelectJmes
processor = SelectJmes('foo')
print(processor({'foo':'bar'}))
运行结果: bar
scrapy Crawl_spider的更多相关文章
- 使用 Scrapy 构建一个网络爬虫
来自weixin 记得n年前项目需要一个灵活的爬虫工具,就组织了一个小团队用Java实现了一个爬虫框架,可以根据目标网站的结构.地址和需要的内容,做简单的配置开发,即可实现特定网站的爬虫功能.因为要考 ...
- 使用Scrapy构建一个网络爬虫
记得n年前项目需要一个灵活的爬虫工具,就组织了一个小团队用Java实现了一个爬虫框架,可以根据目标网站的结构.地址和需要的内容,做简单的配置开发,即可实现特定网站的爬虫功能.因为要考虑到各种特殊情形, ...
- Scrapy学习-23-分布式爬虫
scrapy-redis分布式爬虫 分布式需要解决的问题 request队列集中管理 去重集中管理 存储管理 使用scrapy-redis实现分布式爬虫 github开源项目: https://g ...
- 【Scrapy笔记】使用方法
安装: 1.pip install wheel 安装wheel 2.安装Twisted a.访问 http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted ...
- Scrapy框架爬虫初探——中关村在线手机参数数据爬取
关于Scrapy如何安装部署的文章已经相当多了,但是网上实战的例子还不是很多,近来正好在学习该爬虫框架,就简单写了个Spider Demo来实践.作为硬件数码控,我选择了经常光顾的中关村在线的手机页面 ...
- scrapy爬虫docker部署
spider_docker 接我上篇博客,为爬虫引用创建container,包括的模块:scrapy, mongo, celery, rabbitmq,连接https://github.com/Liu ...
- scrapy 知乎用户信息爬虫
zhihu_spider 此项目的功能是爬取知乎用户信息以及人际拓扑关系,爬虫框架使用scrapy,数据存储使用mongo,下载这些数据感觉也没什么用,就当为大家学习scrapy提供一个例子吧.代码地 ...
- ubuntu 下安装scrapy
1.把Scrapy签名的GPG密钥添加到APT的钥匙环中: sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 6272 ...
- 网络爬虫:使用Scrapy框架编写一个抓取书籍信息的爬虫服务
上周学习了BeautifulSoup的基础知识并用它完成了一个网络爬虫( 使用Beautiful Soup编写一个爬虫 系列随笔汇总 ), BeautifulSoup是一个非常流行的Python网 ...
随机推荐
- 【转载】Visual Studio2017如何打包发布Winform窗体程序
在用C#语言编写好Winform窗体程序后,最后一步的操作是将设计好的Winform程序代码进行打包以及发布成安装包.在Visual Studio2017开发工具中,打包发布WinForm程序是比较简 ...
- 关于创建node服务
1.环境条件准备: A.确定node已经创建 B.npm或cnpm已经下载,npm和cnpm其实是一个道理 C.mysql或者使用其他数据库已经安装(本例使用mysql) 2.开始创建,首先新建一个文 ...
- Fundebug 微信小游戏异常监控插件更新至 0.5.0,支持监控 HTTP 慢请求
摘要: 支持监控 HTTP 慢请求,同时修复了记录的 HTTP 响应时间偏小的 BUG. Fundebug是专业微信小游戏 BUG 监控服务,可以第一时间捕获线上环境中小游戏的异常.错误或者 BUG, ...
- 使用策略组禁止win10某个程序运行
打开策略组:win+R----gpedit.msc 一.计算机配置——windows设置——安全设置——软件限制策略——其他规则——空白处右键,新建哈希规则 点击浏览,并不安全级别设置为不允许,选中程 ...
- Ubuntu的apt命令详解
apt-cache和apt-get是apt包的管理工具,他们根据/etc/apt/sources.list里的软件源地址列表搜索目标软件.并通过维护本地软件包列表来安装和卸载软件. 查看本机是否安装软 ...
- 基本 Python 面试问题
目录 1.为什么学习Python? 2.通过什么途径学习的Python? 3.Python和Java.PHP.C.C#.C++等其他语言的对比? 4.简述解释型和编译型编程语言? 5.Python解释 ...
- 201871010107-公海瑜《面向对象程序设计(java)》第十二周学习总结
201871010107-公海瑜<面向对象程序设计(java)>第十二周学习总结 项目 内容 ...
- java+selenium3学习
http://blog.csdn.net/u011541946/article/details/72898514 http://git.oschina.net/zhengshuheng https:/ ...
- hbase配置hdfs的HA之后需要修改的路径
hbase-site.xml中配置了hdfs的一个路径 <property> <name>hbase.rootdir</name> <value>hdf ...
- Visual Studio 2017 软件包及教程
下载地址:https://files.cnblogs.com/files/yungle/VisualStudio2017.rar 安装教程:https://mp.weixin.qq.com/s?__b ...