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网 ...
随机推荐
- Linux下实现不活动用户登录超时后自动登出
方法一:通过修改.bashrc或.bash_profile文件来实现 通过修改home目录下的.bashrc或.bash_profile文件来实现.这两个文件选择其中一个在末尾加入如下一行,具体操作 ...
- Mysql EF Core 快速构建 Web Api
(1)首先创建一个.net core web api web项目; (2)因为我们使用的是ef连接mysql数据库,通过NuGet安装MySql.Data.EntityFrameworkCore,以来 ...
- ConstraintLayout 用法
当前描述是基于constraint-layout:1.1.2. 一.前言 在以前,android是使用布局如LinearLayout .RelativeLayout等来构建页面,但这些布局使用起来很麻 ...
- Objective-C学习——中文URL编码和解码
发现NSString类中有内置的方法可以实现.他们分别是: - (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncod ...
- [MySQL] 为什么要给表加上主键
1.一个没加主键的表,它的数据无序的放置在磁盘存储器上,一行一行的排列的很整齐. 2.一个加了主键的表,并不能被称之为「表」.如果给表上了主键,那么表在磁盘上的存储结构就由整齐排列的结构转变成了树状结 ...
- Python语言基础04-构造程序逻辑
本文收录在Python从入门到精通系列文章系列 学完前面的几个章节后,博主觉得有必要在这里带大家做一些练习来巩固之前所学的知识,虽然迄今为止我们学习的内容只是Python的冰山一角,但是这些内容已经足 ...
- 解决txt乱码:将windows新建txt转换成utf-8格式
场景:产品将版本发布说明发给配置管理员(我自己),我使用jenkins建的任务自动传这个版本发布说明文件(release_note.txt)到ftp以后,打开文件后发现乱码. 调试: 但是将文件另存为 ...
- css 序
盒模型 1.属性:width :内容的宽度 书写内容的宽度 height:内容的高度 书写内容的宽度 padding:内边框 内容到边框的距离 可以有 background-color borde ...
- python requests访问https的链接,不打开fiddler的情况下不报错;若是打开fiddler则报ssl错误,请求中添加verify=False,会报警告;若不想看到警告,有3种方式;
import requests# import warnings# warnings.filterwarnings("ignore") #方法一#requests.packages ...
- Cmakelists.txt 的基本框架
# 执行 cmake . # 表示在当前目录下执行 cmake cmake .. # 表示在前一级目录下执行 cmake make # 在当前目录下执行 make # 语法 #1 设置 cmake 版 ...