5.spiders(文件夹)

一、基础知识

  1. Spiders 文件夹

   用于编写爬虫规则,可以在已有的___init__.py文件中编写具体的爬虫规则但是实际开发中可能有多个爬虫规则,所以建议一个爬虫规则用一个文件表示,这样便于维护和管理

2. 代码

# -*- coding: utf-8 -*-
import scrapy
from baidu.items import BaiduItem
from scrapy.selector import Selector #自带的数据清洗模块
from scrapy.spiders import Spiderclass SpiderSpodersSpider(scrapy.Spider):name = 'Spider_spoders'#必须设置,而且是唯一的命名,用于运行爬虫allowed_domains = ['baidu.com']start_urls = ['http://baidu.com/list?cid=110','http://baidu.com/list?cid=110102']#函数parse处理相应内容,函数名不能更改def parse(self, response):sel=Selector(response)#将相应内容生成selector,用于数据的清洗items=[]item=BaiduItem()#定义BaiduItem对象title=sel.xpath('//div[@class="question-title"]/a/text()').extract()for i in title:items.append(i)items['TitleName']=itemsreturn item

 代码说明:

(1) 属性name不能为空,是程序运行入口,如果有多个爬虫规则,那么每个规则的属性name不能重复

(2) Allowed_domains是设置允许访问的域名,如果为空,就说明对域名不做访问限制

(3) Start_urls用于设置爬取对象的URL,程序运行时会对start_urls遍历处理

(4) 类方法parse()用于处理网站的相应内容,如果爬虫引擎是Spider,方法名就不能更改

(5) 爬虫规则以类为实现单位,并继承父类Spider,Spider是Scrapy的爬虫引擎

3. spiders介绍

  (1) Spider是定义如何抓取某个网站的类,包括如何执行抓取(访问URL)以及如何从页面中提取结构化数据(抓取数据)。Spider是开发者自定义的类,用于为特定的网抓取和解析页面。

  (2)Spider执行周期:

  1. 抓取第一个URL的初始请求,然后指定一个回调函数,从请求的响应来调用回调函数,请求链接通过调用start_requests()方法,parse方法作为回调函数处理请求链接返回的请求结果
  2. 在回调函数中,主要解析响应内容,并将解析后的数据存储在item对象中
  3. 在回调函数中,通常选用选择器(beautifulsoup、lxml)解析页面内容,并将解析的数据存储在item对象中。

4 Spider的种类

 (1)Scrpay.spiders.Spider:最简单的spider类,其他的类是继承该类,不提供任何的特殊功能,只提供一个默认的start_requests()方法,请求从start_urls开始,Spider发送请求,并使用函数parse处理每个响应内容。

 (2)Scrapy.spiders.CrawlSpider:抓取常规网站最常用的spider,提供了一个方便机制,可通过定义一组规则来跟踪URL,适合全站数据爬取和通用的爬虫开发。除了拥有scrapy.spider.Spider全部属性之外,还有特定属性rules和parse_start_url方法

转载于:https://www.cnblogs.com/luoyw/p/10587241.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/463067.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

unlink(file_name)

官方描述: unlink的文档是这样描述的: unlink() deletes a name from the filesystem. If that name was the last link to a file and no processes have the file open the file is deleted and the space it was using is made available for reuse. …

sql server行级锁,排它锁,共享锁的使用

一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新 A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 脏读 A用户修改了数据,随后B用户又读出该数据,但A用户因为某些原因取消了对数据的修…

日常学习笔记(1)

2019/03/19 21:12 1.函数:numpy.linspace(start,stop,num50,endpointTrue,retstepFalse,dtypeNone)参数: start:scalar类型(个人理解是标量的意思,这不是一个具体的数据类型,而是指某一些数据类型&#xff…

淘宝开发平台知识点一,入门指南

App Key:12038991 App Secret:bb6e1d29db744ed023bfed6a3af6f4f3 1,测试环境下,获取授权码,只有十分钟 http://open.taobao.com/isv/authorize.php?appkey12038991 2,http://container.api.tbsandbox.com/container?…

【转】Linux 下修改Tomcat使用的JVM内存大小

转自 :http://blog.csdn.net/sully2008/article/details/6457570 我的服务器的配置:# OS specific support. $var _must_ be set to either true or false.JAVA_OPTS"-Xms1024m -Xmx4096m -Xss1024K -XX:PermSize512m -XX:MaxPermSize2048m"…

OpenSSL 创建自签名证书

1、生成服务器私钥openssl genrsa -out client.key 40962、生成证书签名请求(CSR)openssl req -new -key client.key -out client.csr3、使用上一步的证书签名请求签发证书openssl x509 -req -days 365 -in client.csr -signkey client.key -out client.…

C++ functor 仿函数

在C中,仿函数不是一个函数,是一个类,这个类实现了函数的功能。 如果我想实现一个求和的功能:定义一个Sum类,让其中的()函数实现这个功能,代码如下: class Sum { public:Sum() default;virtua…

C#中实现鼠标拖动窗体的方法

用C#实现鼠标拖动窗体,方法可能有很多,不过我想最好多还应该是直接记录鼠标的位置,进而完成操作: private void AddList_MouseDown(object sender, MouseEventArgs e){// Gets the x-coordinate and y-coordinate of …

Sql Server 2008将数据库导出sql脚本并导出数据

1.使用Sql Server Management Studio 2008 连接数据库。 2.选中要导出数据的数据库节点,点鼠标右键,在菜单中选择“任务”->“生成脚本”,如图: 3。在弹出的界面中,点2次“下一步”进入如图界面中,把“编…

SQL SERVER 查询表的行数

SELECT OBJECT_NAME(ii.id) TableName ,rows FROM sysindexes ii INNER JOIN sysobjects oo ON ( oo.id ii.idAND oo.xtype U ) WHERE ii.indid < 2 ORDER BY rows desc ; 转载于:https://www.cnblogs.com/JinweiChang/p/10592680.html

C/C++中的占位符

在C、c语言中增加了占位符&#xff0c;目的是为了减少内存的使用&#xff0c;但是现在内存已经不是瓶颈了&#xff0c;进而很少用占位符了 union V {struct X {unsigned char s1:2;unsigned char s2:3;unsigned char s3:3;} x;unsigned char c; } v; v.c 100; printf("%d…

Book

Folksonomies: Indexing and Retrieval in the Web 2.0 202转载于:https://www.cnblogs.com/kuiyuan/archive/2010/04/06/1705811.html

男性早孕-从软件与程序的区别说起

引言 今日新闻《如此医院太荒唐大小伙子被查出“早孕”》&#xff0c;百度搜索结果如下&#xff1a; 看到这结果&#xff0c;大家啥感想&#xff1f; 按常理&#xff0c;医院粗心、医疗机构忽视患者权益、经济利益的恶性驱动等等言论&#xff0c;唾沫星子基本足以把肇事医院来个…

spring-boot+swagger实现WebApi文档

1、引用依赖包 <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.5.0</version> </dependency <dependency><groupId>io.springfox</groupId><artifact…

如何使用单线程处理高并发

单线程相当于一个队列&#xff0c;只能按照顺序执行&#xff0c;如果要实现高并发&#xff0c;可以借助下面的方式&#xff1a; (1)、IO多路复用技术 (2)、采用事件驱动模型&#xff0c;基于异步回调来处理事件来

Sql优化文档

sql 优化 目的 数据库参数进行优化所获得的性能提升全部加起来只占数据库应用系统性能提升的40%左右&#xff0c;其余60%的系统性能提升全部来自对应用程序的优化。许多优化专家甚至认为对应用程序的优化可以得到80%的系统性能提升。因此可以肯定&#xff0c;通过优化应用程序来…

为什么在中国“公有云”落地那么难?

【编者按】本文是在美国和中国的互联网和云服务领域有近10年经验的专业人士Lillian Shao应PingWest邀请撰写的文章。从专业的角度解析了为什么在美国和世界很多地区已经大范围普及、对创业者帮助甚大的“公有云”服务&#xff0c;在中国却很难落地的各个维度原因。大家可以直接…

含有5亿个整数的大文件,如果排序?

给你1个文件bigdata&#xff0c;大小4663M&#xff0c;5亿个数&#xff0c;文件中的数据随机,如下一行一个整数&#xff1a; 61963023557681612158020393452095006174677379343122016371712330287901712966901...7005375 现在要对这个文件进行排序&#xff0c;怎么搞&#xf…

jmeter连数据库

前提&#xff1a;jmeter不能直接连数据库&#xff0c;需要导入一个jar包 步骤&#xff1a; 1、右键线程组--添加--配置元件--JDBC Connection Configuration 2、jdbc的基本配置&#xff1a;可以修改jdbc配置的名称、随便填写变量名Variable Name&#xff0c;再填写最下面的数据…

设置窗口的光标,设置ToolBar,设置状态栏

代码 //ex_10Dlg.cpp : implementation file//#include "stdafx.h"#include "ex_10.h"#include "ex_10Dlg.h"#ifdef _DEBUG#definenew DEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[] __FILE__;#endif///////CAboutDlg dialog used for App Abo…