crawl

Scrapy 1.5.0之爬取规则

拜拜、爱过 提交于 2019-12-09 16:53:15
Spiders参数 spiders可以通过接收参数来修改其爬取行为。crawl 通过使用选项 -a 传递爬虫参数。 scrapy crawl myspider -a category=electronics spiders 在构造函数中接收参数: import scrapy class MySpider(scrapy.Spider): name = 'myspider' def __init__(self, category=None, *args, **kwargs): super(MySpider, self).__init__(*args, **kwargs) self.start_urls = ['http://www.example.com/categories/%s' % category] # ... 也可以通过Scrapyd schedule.json API传递spiders参数。 Generic Spiders(通用爬虫) 举个例子,在项目中假设在myproject.items中定义了一个TestItem类,如下图。 import scrapy class TestItem(scrapy.Item): id = scrapy.Field() name = scrapy.Field() description = scrapy.Field()

Crawl Spider 模板的使用

我的梦境 提交于 2019-12-07 12:23:57
1.Spider模板 scrapy默认创建的spider模板就是basic模板,创建spider文件的命令是: scrapy genspider dribbble dribbble.com ,查看spider模板的命令是: scrapy genspider --list ; 在项目中明确指明使用crawl生成模板生成spider的命令是: scrapy genspider -t crawl csdn www.csdn.net ; import scrapy from scrapy.linkextractors import LinkExtractor from scrapy.spiders import CrawlSpider, Rule class CsdnSpider(CrawlSpider): name = 'csdn' allowed_domains = ['www.csdn.net'] start_urls = ['https://www.csdn.net/'] rules = ( Rule(LinkExtractor(allow=r'Items/'), callback='parse_item', follow=True), ) def parse_item(self, response): return item 2.CrawlSpider类介绍

Scrapy

本小妞迷上赌 提交于 2019-12-06 20:58:41
接着前一篇通过基础爬虫对问答频道文章的采集,下面我们试用一下Scrapy工具箱中几个不错的功能。 由于大部分数据爬取工作具有相似性、一致性,所以Scrapy特别提供了若干个 更高程度封装的通用爬虫类 来协助我们更快速、高效的完成爬虫开发工作 #查看scrapy提供的通用爬虫(Generic Spiders) scrapy genspider -l CrawlSpider CrawlSpider 是通用爬虫里最常用的一个 通过一套规则引擎,它自动实现了页面链接的搜索跟进,解决了包含但不限于自动采集详情页、跟进分类/分页地址等问题 最后,我们仅仅需要开发实现 ’详情页解析器‘ 逻辑便能完成爬虫开发工作 这里我们以爬取马蜂窝北京行程资源( http://www.mafengwo.cn/xc/10065/ )为例: #基于通用爬虫模板创建爬虫 scrapy genspider --template crawl xinchen www.mafengwo.cn/xc/10065 然后我们设计以下的具体爬虫逻辑,编辑文件 mafengwo/mafengwo/spiders/xinchen.py 为了方便演示,本例中我们把相关的爬虫主逻辑、持久化逻辑,数据建模逻辑等等都封装在该爬虫文件中 # -*- coding: utf-8 -*- import scrapy from scrapy

Python 爬取可用代理 IP

走远了吗. 提交于 2019-12-05 20:30:18
通常情况下爬虫超过一定频率或次数,对应的公网 IP 会被封掉,为了能稳定爬取大量数据,我们一般从淘宝购买大量代理ip,一般 10元 10w IP/天,然而这些 IP 大量都是无效 IP,需要自己不断重试或验证,其实这些 IP 也是卖家从一些代理网站爬下来的。 既然如此,为什么我们不自己动手爬呢?基本思路其实挺简单: (1)找一个专门的 proxy ip 网站,解析出其中 IP (2)验证 IP 有效性 (3)存储有效 IP 或者做成服务 一个 demo 如下: import requests from bs4 import BeautifulSoup import re import socket import logging logging.basicConfig(level=logging.DEBUG) def proxy_spider(page_num): headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'} for i in range(page_num): url = 'http://www.xicidaili.com/wt/' + str(i + 1) r = requests.get(url=url, headers

用scrapy-redis爬去新浪-以及把数据存储到mysql\mongo

断了今生、忘了曾经 提交于 2019-12-05 08:53:13
需求: 爬取新浪网导航页 ( http://news.sina.com.cn/guide/ ) 所有下所有大类、小类、小类里的子链接,以及子链接页面的新闻内容。 准备工作: a.安装redis(windows或者linux) b. 安装 Redis Desktop Manager c. scrapy-redis的安装以及scrapy的安装 d.安装mongo e.安装mysql 创建项目和相关配置 创建项目命令:scrapy startproject mysina 进入mysina目录:cd mysina 创建spider爬到:scrapy genspider sina sina.com 执行运行项目脚本命令:scrapy crawl sina 1.item.py import scrapy class SinaItem ( scrapy.Item ) : #大标题 parent_title = scrapy.Field () #大标题对应的链接 parent_url = scrapy.Field () #小标题 sub_title = scrapy.Field () #小标题的链接 sub_url = scrapy.Field () #大标题和小标题对应的目录 sub_file_name = scrapy.Field () #新闻相关内容 son_url = scrapy

CrawlSpider(规则爬虫)和Spider版爬虫

心不动则不痛 提交于 2019-12-01 09:27:17
需求: 爬取投诉帖子的名称、帖子的url、帖子的标题,和帖子里的内容。 1.规则爬虫--scrapy genspider -t crawl Question wz.sun0769.com **Question .py import scrapy from scrapy.linkextractors import LinkExtractor from scrapy.spiders import CrawlSpider , Rule from Dongguan.items import DongguanItem class QuestionSpider ( CrawlSpider ) : name = 'Question' allowed_domains = [ 'wz.sun0769.com' ] start_urls = [ 'http://wz.sun0769.com/index.php/question/questionType?type=4&page=0' ] rules = ( # Rule规则里面如果没有写Rule,默认是深度爬取 # 所以帖子的页面的数据 Rule ( LinkExtractor ( allow = r'type=4' ) , follow = True ) , # 下一页的匹配 Rule ( LinkExtractor ( allow = r

使用scrapy的定制爬虫-第一章-前言

自古美人都是妖i 提交于 2019-11-29 13:04:12
这个系列文章还在逐步完成中,可能会多次编辑 这是一个系列文章,关于定制爬虫,使用scrapy. 这是前言. 爬虫,最广为所知用途是搜索引擎的网页抓取.也有很多其他的用途. 诸如各类比价网站(etao,惠惠购物助手等),信息聚合,采集站等等.这种爬虫不像通用的搜索引擎爬虫,他们往往有各自的目的,例如比价网站,其爬虫周期性的从网上获取物品的价格信息.信息聚合站点将一类信息通过爬虫采集后呈现. 在几年前比价这个概念还不像现在这样广泛时,我在一个群里听人说及他正在开发一个购物比价的产品.想着这难度还是不小的.不确定那时是否有各类成熟的框架或示例供参考.他要实现一个下载调度,解析内容,爬取策略,等等等等.实际上我当时感觉,最大的难点在于,被爬取网站每改版一次,他的解析器就得重写一次,非常麻烦.但实际上网站的改版不会如此频繁,解析内容部分对应修改即可.略惊讶的是,比价这个概念,在2000年左右就有了(如果没记错我是在http权威指南的某部分看到的). 最近我玩了一下爬虫.在此之前,我对http,web相关规范,web自动化(用于测试,我用这个来写web机器人.)也有一定了解. 在这个过程中遇到了一系列的问题.包括 1,javascript动态生成内容处理. 2,html,http等相关规范及细节问题. 3,调度,效率等. 4,大规模爬取相关... etc... 这个系列文章将涉及这些问题