推荐文章

1、在Visual Studio 中安装Python

1、在Visual Studio 中安装Python

1、下载并运行适用于 Windows 的最新 Visual Studio 2017 安装程序(版本 15.2 及更高版本提供 Python 支持)。 如果已安装 Visual Studio,请运行 Visual Studio 安装程序,并转到步骤2 安装 Visual Studio 2017 Community 2、安装程序提供工作负载列表,即一组用于特定开发领域的相关选项。 对于 Python
2、创建新的 Python 项目

2、创建新的 Python 项目

项目是 Visual Studio 管理所有文件(包括源代码、资源、配置等等)的一种方式,这些文件结合在一起可生成单个应用程序。 项目可规范和维护其所有文件以及由多个项目共享的外部资源之间的关系。 比起在临时文件夹、脚本、文本文件中甚至完全按自己的想法简单地管理项目关系,这样做让应用程序能够更轻松地扩展和增长。本教程将从一个包含单一空代码文件的简单项目开始。1、在 Visual Studio 中,
3、编写和运行代码

3、编写和运行代码

1、创建新的“Python 应用程序”项目后,名为 PythonApplication1.py 的默认空文件将在 Visual Studio 编辑器中打开。2、在编辑器中,开始键入 print("Hello, PB2.CN"),注意 Visual Studio IntelliSense 如何在此过程中显示自动完成选项。 下拉列表中加外边框的选项是按 Tab 键时使用的默认完成选项。 涉及到较长的
4、在调试器中运行代码

4、在调试器中运行代码

1、用以下代码替换 PythonApplication1.py 文件中的代码。 此代码变体展开了 make_dot_string,以便用户在调试器中检查其各个步骤。 它还将 f 循环放入 main 函数,并通过调用该函数显式运行该循环: from math impt cos, radians# Create a string with spaces proptional to a cosine o
Python基本语法

Python基本语法

1、一般用反斜杠 \ 将Python的一行语句分为多行显示total = item_one + \ item_two + \ item_three2、raw_input 输入内容 遇见回车终止并跳出raw_input("\n\nPress the enter key to exit.")3、数据类型之列表List个人理解类似C++中的数组list = [ Ma, 786

Scrapy的CrawlSpider模板

日期:2019-06-11 点击:719 来源:PB2.CN

一、创建CrawlSpider模板

#新建项目
scrapy startprobject <新建项目>
cd <新建项目>

#添加爬虫
scrapy genspider -t crawl <爬虫名字> <域名>


#####修改rules爬虫规则和callback保存爬取的数据####


#运行
scrapy crawl <爬虫名字>

二、模板代码示例:

# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule

class XxxSpider(CrawlSpider):
    name = 'xxx'
    allowed_domains = ['www.baidu.com']
    start_urls = ['http://www.baidu.com']
    
    rules = (
        Rule(LinkExtractor(allow=r'Items/'), callback='parse_item', follow=True),
    )

    def parse_item(self, response):
        i = {}
        #i['domain_id'] = response.xpath('//input[@id="sid"]/@value').extract()
        #i['name'] = response.xpath('//div[@id="name"]').extract()
        #i['description'] = response.xpath('//div[@id="description"]').extract()
        return i

三、CrawlSpider 继承自Spider 类,除了(name, allowed_domains, start_urls)之外,还定义了rules

CrawlSpider使用rules来定义爬虫的爬取规则,并将匹配后的url自动拼接完整构造成请求提交给引擎。所以在正常情况下,CrawlSpider不需要单独手动返回请求了。
在rules中包含一个或多个Rule对象,每个Rule对爬取网站的动作定义了某种特定操作,比如提取当前相应内容里的特定链接,是否对提取的链接跟进爬取,对提交的请求设置回调函数等。
如果多个rule匹配了相同的链接,则根据规则在本集合中被定义的顺序,第一个会被使用。

Rule对象的参数
1、LinkExtracto 链接提取器,用于提取需要爬取的链接
2、callback 回调函数,提取的url请求对应的响应的处理函数,函数名是一个字符型
注意:当编写爬虫规则时,避免使用parse作为回调函数。由于CrawlSpider使用parse方法来实现其逻辑,如果覆盖了 parse方法,crawl spider将会运行失败。
3、follow 是否跟进链接,True表示跟进,就是在请求的url页面,有满足这个规则的url会被继续提取,然后组成Request发送跟调度器排队继续请求
4、process_links:指定该spider中哪个的函数将会被调用,从link_extractor中获取到链接列表时将会调用该函数。该方法主要用来过滤。
5、process_request:指定该spider中哪个的函数将会被调用, 该规则提取到每个request时都会调用该函数。 (用来过滤request)

LinkExtractor
1、allow:满足括号中正则表达式的URL会被提取,如果为空,则全部匹配。
2、deny:满足括号中正则表达式的URL一定不提取(优先级高于allow)。
3、allow_domains:会被提取的链接的domains。
4、deny_domains:一定不会被提取链接的domains。
5、restrict_xpaths:使用xpath表达式,和allow共同作用过滤链接。

这篇文档对您是否有帮助?

1、在Visual Studio 中安装Python

1、在Visual Studio 中安装Python

1、下载并运行适用于 Windows 的最新 Visual Studio 2017 安装程序(版本 15.2 及更高版本提供 Python 支持)。 如果已安装 Visual Studio,请运行 Visual Studio 安装程序,并转到步骤2 安装 Visual Studio 2017 Community 2、安装程序提供工作负载列表,即一组用于特定开发领域的相关选项。 对于 Python
2、创建新的 Python 项目

2、创建新的 Python 项目

项目是 Visual Studio 管理所有文件(包括源代码、资源、配置等等)的一种方式,这些文件结合在一起可生成单个应用程序。 项目可规范和维护其所有文件以及由多个项目共享的外部资源之间的关系。 比起在临时文件夹、脚本、文本文件中甚至完全按自己的想法简单地管理项目关系,这样做让应用程序能够更轻松地扩展和增长。本教程将从一个包含单一空代码文件的简单项目开始。1、在 Visual Studio 中,
3、编写和运行代码

3、编写和运行代码

1、创建新的“Python 应用程序”项目后,名为 PythonApplication1.py 的默认空文件将在 Visual Studio 编辑器中打开。2、在编辑器中,开始键入 print("Hello, PB2.CN"),注意 Visual Studio IntelliSense 如何在此过程中显示自动完成选项。 下拉列表中加外边框的选项是按 Tab 键时使用的默认完成选项。 涉及到较长的
4、在调试器中运行代码

4、在调试器中运行代码

1、用以下代码替换 PythonApplication1.py 文件中的代码。 此代码变体展开了 make_dot_string,以便用户在调试器中检查其各个步骤。 它还将 f 循环放入 main 函数,并通过调用该函数显式运行该循环: from math impt cos, radians# Create a string with spaces proptional to a cosine o
Python基本语法

Python基本语法

1、一般用反斜杠 \ 将Python的一行语句分为多行显示total = item_one + \ item_two + \ item_three2、raw_input 输入内容 遇见回车终止并跳出raw_input("\n\nPress the enter key to exit.")3、数据类型之列表List个人理解类似C++中的数组list = [ Ma, 786