Scrapy
龙王.*?
向来心是看客心,奈何人是剧中人。
展开
-
Scrapy自建IP代理池(二)
这篇博客将实现无忧代理和全国代理的爬取及存入Redis数据库。无忧代理的反爬措施主要在于页面的端口和获取的源代码的端口号不一致,不一致的原因是存在js的加密处理。解决的方法就是直接查看对应的js源码,看看加密的原理。经F12查看得知加密的js为http://www.data5u.com/theme/data5u/javascript/pde.js?v=1.0,通过在线工具可以进行源...原创 2020-03-16 20:40:49 · 2071 阅读 · 0 评论 -
Scrapy自建ip代理池(一)
自建代理池的第一步就是要在网上爬取到大量可用的ip,这里推荐三个网站:云代理、西刺代理、快代理。下面是爬取的代码。Spider文件# -*- coding: utf-8 -*-from scrapy import Spiderfrom scrapy import Requestfrom ..items import YunItemclass YunSpider(Spider):...原创 2020-03-13 14:31:37 · 917 阅读 · 0 评论 -
Scrapyd部署分布式爬虫(二)
上一节,我们介绍了通过Scrapyd提供的 http接口来运行Scrapy项目,但这个前提条件是需要事先将Scrapy项目打包成egg文件。虽然可以使用setup-tools工具实现打包,但整个过程太繁琐。这里介绍第三方库Scrapyd-Client。它的功能主要有两个:将项目打包成egg文件; 将egg文件通过Scrapyd的addversion.json接口上传到目标服务器;安装Scr...原创 2020-02-26 16:34:20 · 1341 阅读 · 0 评论 -
Scrapyd部署分布式爬虫(一)
Scrapyd是一个部署和管理Scrapy爬虫的工具,它可以通过一系列HTTP接口实现远程部署、启动、停止和删除爬虫程序。Scrapyd还可以管理多个爬虫项目,每个项目可以上传多个版本,但只执行最新的版本。Scrapyd的安装及运行pip install scrapyd安装完毕之后,Scrapyd在运行时需要读取/etc/scrapyd/scrapyd.conf文件,由于在Scrap...原创 2020-02-25 20:44:08 · 1250 阅读 · 0 评论 -
Scrapy连接各种数据库
MysqlPython要想要访问Mysql数据库,事先需要安装访问Mysql所使用的第三方库。根据Python版本的不同,所使用的第三方库也不一样:Python2:MySQLdb Python3:mysqlclientmysqlclient是Mysqldb的优化版,增加了对Python3的支持和错误修复。这两个库的接口几乎一样,因此在不同版本的Python环境中,可以使用相同的代码实现...原创 2020-02-25 16:54:37 · 1759 阅读 · 1 评论 -
Scrapy框架——日志配置
setting配置import datetime#配置日志文件名和位置to_day = datetime.datetime.now()log_file_path = "log/scrapy_{}_{}_{}.log".format(to_day.year,to_day.month,to_day.day)LOG_FILE = log_file_pathLOG_LEVEL = "WA...原创 2019-12-19 13:27:16 · 674 阅读 · 0 评论 -
Scrapy框架——shell
环境ubuntu scrapy ipython为什么要使用 scrapy shell?Scrapy终端是一个交互终端,供您在未启动spider的情况下尝试及调试您的爬取代码。 其本意是用来测试提取数据的代码,不过您可以将其作为正常的Python终端,在上面测试任何的Python代码。该终端是用来测试XPath或CSS表达式,查看他们的工作方式及从爬取的网页中提取的数据。 在编写您...原创 2019-12-17 14:55:03 · 257 阅读 · 0 评论 -
scrapy——自定义用户代理池
有的反爬措施是通过检验你的uesr_agent访问的频率来判断你是不是属于恶意的爬虫。对付这种情况,我们就可以自定义一个用户代理池,每此访问都从中随机的抽取一个user_agent添加进请求头。这是我网上找了一下可用的代理。 先将用户代理池以列表的形式写入settings文件,如下所示: MY_USER_AGENT = ['Mozilla/5.0 (Windows NT 6.1; ...原创 2019-04-02 11:02:23 · 478 阅读 · 0 评论 -
Scrapy框架(五)——Selector、Request、Response
选择器(Selector)在parse方法中,我们经常要用到xpath、CSS、re来提取数据。在Scrapy中就为我们封装了这些方法于Selector,而且Selector是基于lxml构建的,这就意味着性能上不会有太大问题。在这里,我就不再重复记录什么是xpath、css、re,在以前博客中,这些都以记载过。下面简单演示下:由于使用Xpath和CSS选择器来提取数据非常...原创 2019-03-28 00:28:35 · 1551 阅读 · 0 评论 -
Scrapy框架(七)——Settings
官方参考设置Scrapy设置允许您自定义所有Scrapy组件的行为,包括核心,扩展,管道和爬虫本身。设置的基础结构提供了键值映射的全局命名空间,代码可以使用它从中提取配置值。可以通过不同的机制来填充设置,这将在下面描述。指定设置使用Scrapy必须要告诉它使用哪些设置。可以使用环境变量SCRAPY_SETTINGS_MODULE来进行制定,而且SCRAPY_SETTINGS_M...翻译 2019-04-01 11:40:27 · 728 阅读 · 0 评论 -
Scrapy框架(六)——Middleware
Middleware其实是一个轻量级、较底层的钩子框架,用来全局的去处理相对应的内容。Scrapy中主要有两种Middleware,一种是Downloader Middleware,一种是Spider Middleware。下载中间件下载中间件是scrapy提供用于用于在爬虫过程中可修改Request和Response,用于扩展scrapy的功能;Downloader Middlewa...翻译 2019-03-31 20:34:48 · 592 阅读 · 0 评论 -
Scrapy框架(四)——CrawlSpider
第二篇博客中记载了Spider这个类,那么CrawlSpider是一个继承Spider的一个通用全站爬虫子类,可以用来实现某些特定的功能。这个子类主要是通过一条条rule的限定来提取页面中所有的链接。要实现这个类,我们首先得导包,继承它。可以用命令行的方式来创建这个文件。scrapy genspider -t crawl <name> <domain>from s...原创 2019-03-27 16:11:39 · 383 阅读 · 0 评论 -
Scrapy框架(三)——Item
上一篇博客的例子中,提到了parse方法一般会返回一个request对象或item对象。那么这篇博客就记录下item,及处理item的管道pipelines。引入在抓取数据的过程中,主要要做的事就是从杂乱的数据中提取出结构化的数据。Scrapy的Spider可以把数据提取为一个Python中的字典,虽然字典使用起来非常方便,对我们来说也很熟悉,但是字典有一个缺点:缺少固定结构。在一个拥...原创 2019-03-26 21:22:37 · 7291 阅读 · 0 评论 -
Scrapy框架(二)——Spider
这里我将spiders的意思理解为在项目Spiders目录下创建的各个py文件(除__init__)。它们的作用是负责网页的抓取逻辑,以及数据的解析逻辑。所以Spider是Scrapy爬虫中相对核心的部分。上一篇中已经谈到了如何使用命令行创建该目录下的文件,这篇将针对这个spider,做下更深入的了解。下面是最原始的模板:import scrapyclass DemoSpide...原创 2019-03-26 20:07:26 · 764 阅读 · 0 评论 -
Scrapy框架(一)——初始Scrapy
Scrapy框架已经自学了大半个月了,今天开始总结下这方面的笔记。这个框架在抓取静态页面上的数据,的确是非常强大。不仅是因为其天生异步,而且里面的逻辑性也非常紧密。没事看看其源码,会使得你对python语法有更深的认识。Scrapy简介Scrapy是一个开源的爬虫框架,目前在Python爬虫领域基本处于一家独大的地位,只要说起Python的开源爬虫框架,那基本指的都是Scrapy。在S...原创 2019-03-26 17:39:59 · 658 阅读 · 0 评论