1、创建一个CrawlerSpider

scrapy genspider -t crawl wx_spider 'wxapp-union.com'
#导入规则
from scrapy.spiders import Rule,CrawlSpider
from scrapy.linkextractors import LinkExtractor

2、Rule规则

class scrapy.spiders.Rule(
link_extractor,#一个LinkExtractor对象,用于定义爬取规则
callback,#满足这个规则的url执行的回调函数 【注意】:不要使用parse函数,因为Crawlspider征用了
follow,#指定根据该规则从response又提取出类似链接要不要继续跟进, 默认为True
process_link,#从link_extractor中获取到的链接会传递给这个函数,用于过滤不需要爬取的链接
)

3、LinkExtractor提取器

class scrapy.linkextractors.LinkExtractor(
allow=(),#允许的url,满足这个正则表达式的url都会被提取
deny=(),#不允许的url
allow_domains=(),#允许的域名
deny_domains=(),#禁止的域名
restrict_xpaths=(),#严格的xpath,与allow共同过滤
unique=True/False,#链接是否去重
)

示例(抓取微信小程序社区)

class WxSpiderSpider(CrawlSpider):
name = 'wx_spider'
allowed_domains = ['wxapp-union.com']
start_urls = ['http://www.wxapp-union.com/portal.php?mod=list&catid=2&page=1'] rules = (
Rule(LinkExtractor(allow=r'.+mod=list&catid=2&page=\d'), follow=True),#定义页面抓取规则,这里允许跟进
Rule(LinkExtractor(allow=r'.+/article-.+\.html'),callback = "parse_detail_page", follow=False)#定义内容抓取规则,这里不允许跟进,也就是内容页上的类似链接不跟进
) def parse_detail_page(self, response):
title = response.xpath('//h1[@class="ph"]/text()').get()
content =response.xpath('//td[@id="article_content"]//text()').getall()
content = ''.join(content)
author_p = response.xpath('//p[@class="authors"]')
author=author_p.xpath('.//a/text()').get()
pub_time=author_p.xpath('.//span/text()').get()
yield WxappItem(title=title,author=author,pub_time=pub_time,content=content)

Scrapy框架Crawler模板爬虫的更多相关文章

  1. Scrapy框架——CrawlSpider类爬虫案例

    Scrapy--CrawlSpider Scrapy框架中分两类爬虫,Spider类和CrawlSpider类. 此案例采用的是CrawlSpider类实现爬虫. 它是Spider的派生类,Spide ...

  2. python学习之-用scrapy框架来创建爬虫(spider)

    scrapy简单说明 scrapy 为一个框架 框架和第三方库的区别: 库可以直接拿来就用, 框架是用来运行,自动帮助开发人员做很多的事,我们只需要填写逻辑就好 命令: 创建一个 项目 : cd 到需 ...

  3. 如何使用Scrapy框架实现网络爬虫

    现在用下面这个案例来演示如果爬取安居客上面深圳的租房信息,我们采取这样策略,首先爬取所有租房信息的链接地址,然后再根据爬取的地址获取我们所需要的页面信息.访问次数多了,会被重定向到输入验证码页面,这个 ...

  4. scrapy框架修改单个爬虫的配置,包括下载延时,下载超时设置

    在一个框架里面有多个爬虫时,每个爬虫的需求不相同,例如,延时的时间,所以可以在这里配置一下custom_settings = {},大括号里面写需要修改的配置,然后就能把settings里面的配置给覆 ...

  5. 一个基于Scrapy框架的pixiv爬虫

    源码 https://github.com/vicety/Pixiv-Crawler,功能什么的都在这里介绍了 说几个重要的部分吧 登录部分 困扰我最久的部分,网上找的其他pixiv爬虫的登录方式大多 ...

  6. python基于scrapy框架的反爬虫机制破解之User-Agent伪装

    user agent是指用户代理,简称 UA. 作用:使服务器能够识别客户使用的操作系统及版本.CPU 类型.浏览器及版本.浏览器渲染引擎.浏览器语言.浏览器插件等. 网站常常通过判断 UA 来给不同 ...

  7. 基于scrapy框架的分布式爬虫

    分布式 概念:可以使用多台电脑组件一个分布式机群,让其执行同一组程序,对同一组网络资源进行联合爬取. 原生的scrapy是无法实现分布式 调度器无法被共享 管道无法被共享 基于 scrapy+redi ...

  8. scrapy框架与python爬虫

  9. 关于使用scrapy框架编写爬虫以及Ajax动态加载问题、反爬问题解决方案

    Python爬虫总结 总的来说,Python爬虫所做的事情分为两个部分,1:将网页的内容全部抓取下来,2:对抓取到的内容和进行解析,得到我们需要的信息. 目前公认比较好用的爬虫框架为Scrapy,而且 ...

随机推荐

  1. Java编译与反编译命令记录

    1.首先进入java文件所在的地址 1) e:/ 2) dir     (显示所有文件) 3) cd eclipse-workspace 2.使用javac命令编译Test.java文件,得到Test ...

  2. Nginx 教程 2:性能

    为了获得更好的学习效果,我们建议你在本机安装 Nginx 并且尝试进行实践. tcp_nodelay, tcp_nopush 和 sendfile tcp_nodelay 在 TCP 发展早期,工程师 ...

  3. idea存在包但是运行项目一直报java.lang.NoClassDefFoundError的问题

    以前做spark时候遇到过,今天高flink又遇到查了半天,这里记录下 1..idea->file->project structure->libraries->(左侧对话框这 ...

  4. Linux操作系统系列-Linux基础

    概述 先了解下unix,unix是一个多任务.多用户的操作系统,并且是收费的操作系统. 1991年的10月5日,林纳斯·托瓦兹在comp.os.minix新闻组上发布消息,正式向外宣布Linux内核的 ...

  5. 2018-9-20-在-Windows-下那些好用的调试软件

    title author date CreateTime categories 在 Windows 下那些好用的调试软件 lindexi 2018-9-20 17:37:1 +0800 2018-09 ...

  6. 查看linux的shhd端口号 netstat | grep sshd

    [root@iZ2zef51hufoaycipfxek8Z ~]# [root@iZ2zef51hufoaycipfxek8Z ~]# netstat | grep sshd [root@iZ2zef ...

  7. BZOJ1096 [ZJOI2007]仓库建设——斜率优化

    方程: $\Large f(i)=min(f(j)+\sum\limits_{k=j+1}^{i}(x_i-x_k)*p_k)+c_i$ 显然这样的方程复杂度为$O(n^3)$极限爆炸,所以我们要换一 ...

  8. bzoj1010: [HNOI2008]玩具装箱toy——斜率优化

    方程 $\Large f(i)=min(f(j)+(s(i)-s(j)-1-L)^2)$ 其中$s(i)$为i的前缀和再加上$i$ 对于某个$i$若$j$比$k$优,则 $\large f(j)+(s ...

  9. 【案例】DIV随鼠标移动而移动

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. IOS学习笔记56-IOS7状态栏适配方法一

    近期由于IOS7的发布,所以应用的适配潮可谓是都搞的锣鼓喧天,甚是热闹,因此呢,因适配IOS7而产生的问题也是铺天盖地的卷来,所以了,我也从简单的状态栏适配开始,先研究了下关于状态栏的适配,特总结如下 ...