scrapy

scrapy 主动停止爬虫

萝らか妹 提交于 2020-01-05 03:42:14
"""CloseSpider is an extension that forces spiders to be closed after certain conditions are met. See documentation in docs/topics/extensions.rst """ class CloseSpider(object): def __init__(self, crawler): self.crawler = crawler self.close_on = { 'timeout': crawler.settings.getfloat('CLOSESPIDER_TIMEOUT'), 'itemcount': crawler.settings.getint('CLOSESPIDER_ITEMCOUNT'), 'pagecount': crawler.settings.getint('CLOSESPIDER_PAGECOUNT'), 'errorcount': crawler.settings.getint('CLOSESPIDER_ERRORCOUNT'), } if not any(self.close_on.values()): raise NotConfigured self.counter = defaultdict(int) if self

python、scrapy下编写妹子图爬虫程序

烂漫一生 提交于 2020-01-05 03:41:59
软件、框架的安装主要参考:http://www.jianshu.com/p/a03aab073a35 Scrapy官方文档:https://docs.scrapy.org/en/latest/intro/install.html(安装、爬虫都有参考的) 程序逻辑、流程主要参考http://cuiqingcai.com/4421.html, 其他细节百度 环境: macOS10.12.3 Python2.7 Scrapy1.3.3 一、软件(python)、框架(scrapy)的安装 mac自带Python,根据Scrapy官网建议,最好下载最新的Python版本安装 1、安装pip工具包的支撑环境 各个电脑的情况不一样,支撑包的情况也不一样,反正一句话:缺什么就装什么,我采用 Homebrew 2、pip源修改(镜像地址) 这个一定要做,默认地址访问速度特别慢,翻墙了都很慢,最后我的总结是:有一半的时间都是因为这个原因导致的 首先创建配置文件,默认情况下Mac端好像是没有pip的配置文件的,我们需要自行创建。 打开终端,在HOME下创建.pip目录: echo $HOME mkdir .pip 接下来创建配置文件pip.conf: touch pip.conf 接下来编辑配置文件,随便使用什么编辑器打开刚刚新建的pip.conf文件,输入以下两行: [global] index

Python爬虫框架Scrapy实战 - 抓取BOSS直聘招聘信息

自古美人都是妖i 提交于 2020-01-05 03:41:41
原文地址 : http://www.jtahstu.com/blog/scrapy_zhipin_spider.html Python爬虫框架Scrapy实战 - 抓取BOSS直聘招聘信息 零、开发环境 MacBook Pro (13-inch, 2016, Two Thunderbolt 3 ports) CPU : 2 GHz Intel Core i5 RAM : 8 GB 1867 MHz LPDDR3 Python 版本: v3.6.3 [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin MongoDB 版本: v3.4.7 MongoDB 可视化工具 :MongoBooster v4.1.3 一、准备工作 安装 Scrapy pip3 install scrapy 如果顺利的话,会像本人这样,装了一大堆软件包 参考翻译文档的安装教程: http://scrapy-chs.readthedocs.io/zh_CN/latest/intro/install.html 官方 GitHub 地址: https://github.com/scrapy/scrapy 二、新建项目 scrapy startproject www_zhipin_com 如果顺利的话,会像本人这样 三、定义要抓取的 Item 在items.py

使用Scrapy爬虫框架简单爬取图片并保存本地(妹子图)

谁说我不能喝 提交于 2020-01-05 03:41:27
初学Scrapy,实现爬取网络图片并保存本地功能 一、先看最终效果 保存在 F:\pics 文件夹下 二、安装scrapy 1、python的安装就不说了,我用的python2.7,执行命令 pip install scrapy ,或者使用 easy_install 命令都可以 2、可能会报如下错误 *********************************************************** Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed? *********************************************************** 1 2 3 1 2 3 解决方法:安装libxml2 下载对应的 Python 的版本,安装即可,网址: https://pypi.python.org/pypi/lxml/3.4.4 三、创建项目 1、执行命令 scrapy startproject xiaohuar 1 1 会自动创建 xiaohuar 的scrapy项目 2、项目结构(我用的是WingIDE) 文件说明: • scrapy.cfg 项目的配置信息,主要为Scrapy命令行工具提供一个基础的配置信息。

Scrapy学习篇(九)之文件与图片下载

為{幸葍}努か 提交于 2020-01-05 03:39:29
Media Pipeline Scrapy为下载item中包含的文件(比如在爬取到产品时,同时也想保存对应的图片)提供了一个可重用的 item pipelines . 这些pipeline有些共同的方法和结构(称之为media pipeline)。 我们可以使用FilesPipeline和Images Pipeline来保存文件和图片 ,他们有以下的一些特点: Files Pipeline 避免重新下载最近已经下载过的数据 指定存储路径 FilesPipeline的典型工作流程如下: 在一个爬虫里,你抓取一个项目,把其中图片的URL放入 file_urls 组内。 项目从爬虫内返回,进入项目管道。 当项目进入 FilesPipeline,file_urls 组内的URLs将被Scrapy的调度器和下载器(这意味着调度器和下载器的中间件可以复用)安排下载,当优先级更高,会在其他页面被抓取前处理。项目会在这个特定的管道阶段保持“locker”的状态,直到完成文件的下载(或者由于某些原因未完成下载)。 当文件下载完后,另一个字段(files)将被更新到结构中。这个组将包含一个字典列表,其中包括下载文件的信息,比如下载路径、源抓取地址(从 file_urls 组获得)和图片的校验码(checksum)。 files 列表中的文件顺序将和源 file_urls 组保持一致

Scrapy爬取美女图片续集 (原创)

点点圈 提交于 2020-01-05 03:39:04
上一篇咱们讲解了Scrapy的工作机制和如何使用Scrapy爬取美女图片,而今天接着讲解Scrapy爬取美女图片,不过采取了不同的方式和代码实现,对Scrapy的功能进行更深入的运用。   在学习Scrapy官方文档的过程中,发现Scrapy自身实现了图片和文件的下载功能,不需要咱们之前自己实现图片的下载(不过原理都一样)。   在官方文档中,我们可以看到下面一些话:Scrapy为下载item中包含的文件(比如在爬取到产品时,同时也想保存对应的图片)提供了一个可重用的 item pipelines . 这些pipeline有些共同的方法和结构(我们称之为media pipeline)。一般来说你会使用Files Pipeline或者 Images Pipeline. 这两种pipeline都实现了以下特性: 避免重新下载最近已经下载过的数据 Specifying where to store the media (filesystem directory, Amazon S3 bucket)   The Images Pipeline has a few extra functions for processing images: 将所有下载的图片转换成通用的格式(JPG)和模式(RGB) 缩略图生成 检测图像的宽/高,确保它们满足最小限制

第5章 scrapy爬取知名问答网站

流过昼夜 提交于 2020-01-05 03:38:06
第五章感觉是第四章的练习项目,无非就是多了一个模拟登录。 不分小节记录了,直接上知识点,可能比较乱。 1.常见的httpcode: 2.怎么找post参数? 先找到登录的页面,打开firebug,输入错误的账号和密码,观察post_url变换,从而确定参数。 3.读取本地的文件,生成cookies。 1 try: 2 import cookielib #py2 3 except: 4 import http.cookiejar as cookielib #py3 4.用requests登录知乎 1 # -*- coding: utf-8 -*- 2 __author__ = 'jinxiao' 3 4 import requests 5 try: 6 import cookielib 7 except: 8 import http.cookiejar as cookielib 9 10 import re 11 12 session = requests.session() #实例化session,下面的requests可以直接换成session 13 session.cookies = cookielib.LWPCookieJar(filename="cookies.txt") #实例化cookies,保存cookies 14 #读取cookies 15 try: 16

第8章 scrapy进阶开发(2)

房东的猫 提交于 2020-01-05 03:36:18
8-4 selenium集成到scrapy中 其实也没什么好说的直接上代码 这是在middlewares.py中定义的一个class: 1 from selenium.common.exceptions import TimeoutException 2 from scrapy.http import HtmlResponse #传递js加载后的源代码,不会返回给download 3 class JSPageMiddleware(object): 4 #通过chrome请求动态网页 5 def process_request(self, request, spider): 6 if spider.name == "JobBole": 7 try: 8 spider.browser.get(request.url) 9 except TimeoutException: 10 print('30秒timeout之后,直接结束本页面') 11 spider.browser.execute_script('window.stop()') 12 import time 13 time.sleep(3) 14 print("访问:{0}".format(request.url)) 15 16 return HtmlResponse(url=spider.browser.current_url,

Use scrapy + splash return html

橙三吉。 提交于 2020-01-05 03:18:08
问题 I'm trying to figure out scrapy and splash. As an exercise, I tried to make splash click on the button on the following javascript heavy website: http://thestlbrowns.com/ and then return the html of the newly rendered page. My code looks like this: import scrapy import json from scrapy import Request class MySpider(scrapy.Spider): name = 'spiderman' domain = ['web'] start_urls = ['http://thestlbrowns.com/'] def start_requests(self): script = """ function main(splash) local url = splash.args

爬虫(十六):Scrapy框架(三) Spider Middleware、Item Pipeline、对接Selenium

本秂侑毒 提交于 2020-01-04 21:52:11
1. Spider Middleware Spider Middleware是介入到Scrapy的Spider处理机制的钩子框架。 当Downloader生成Response之后,Response会被发送给Spider,在发送给Spider之前,Response会首先经过Spider Middleware处理,当Spider处理生成Item和Request之后,Item Request还会经过Spider Middleware的处理。 Spider Middleware有三个作用: 我们可以在Downloader生成的Response发送给Spider之前,也就是在Response发送给Spider之前对Response进行处理。 我们可以在Spider生成的Request发送给Scheduler之前,也就是在Request发送给Scheduler之前对Request进行处理。 我们可以在Spider生成的Item发送给Item Pipeline之前,也就是在Item发送给Item Pipeline之前对Item进行处理。 1.1 使用说明 需要说明的是,Scrapy其实已经提供了许多Spider Middleware,它们被SPIDER_MIDDLEWARES_BASE这个变盘所定义。 SPIDER_MIDDLEWARES_BASE变量的内容如下: { 'scrapy