Scrapy见面第五天

这算是我第一次使用框架吧,说来惭愧。

此前用Request带上cookie实现、(稍微)完善了QQ空间的爬虫(传送门),接下来想实现分布式去爬。其实只要能实现待爬QQ队列的共享,分布式的主要问题也就解决了。但是觉得这样实现的爬虫项目有点“不正规”,所以想用Scrapy框架和Redis数据库来整顿现有爬虫。无奈公司里也没什么人指点,全凭一人摸爬滚打,过程有点痛苦,但自信只要敢啃,还是可以拿下的,不成问题。

然后就动手了。

(忽略安装过程,估计是以前用其他模块的时候已经吐血吐够了,环境都配好了,竟然直接用 pip install scrapy 就成功了)

第一步、当然是百度,看看传说中的“正规军”是什么样子的,快速了解了一下Scrapy工作机制,以及大家在使用scrapy的时候关注的点更多在哪里。然而看的都是似懂非懂,,然而并不重要,我只需要和它碰个面即可。

第二步、搜GitHub,找代码。搜了十几个demo,快速看了一下scrapy的代码结构。

第三步、从各种平台搜索和Scrapy有关的东西,特别是大家对它的看法,主要途径:新浪微博、知乎、推酷、Google。

第四步、调试、运行从GitHub上download下来的demo,大约了解scrapy具体的运行机制。

第五步、是时候静下心来啃Scrapy的官方文档了,受益良多。

第六步、糗事百科作靶子,模仿demo实战练习,再功能延生。

第七步、即现在,第五天。



其实遇到的问题还是挺多的,主要的原因是对Scrapy了解不够深入。想要入门Scrapy容易,但是想要单枪匹马快速入门,就很需要看重怎么走了

我是想着先实现简单的Scrapy爬虫,再用Redis实现分布式。在此之后再进行功能拓展,例如Cookie登录,例如爬虫数据的增加,例如异常处理、性能优化等等。总体的思路是先纵向深入,再横向逐个拓展。

计划虽是这样,但终归还是没忍住花了一天时间动手实现了一下QQ空间和新浪微博的Scrapy爬虫。自增苦恼,不过有所收获。

首先是QQ空间,我之前是用Request的session带上Cookie去打开js的请求,返回来的是js文件,里面包含我所需要的信息。直接请求js文件的好处是数据量小,数据流通和数据处理的花销会小很多(反正我的小本本一个小时能抓17万条说说)。而如今,我用Scrapy带上Cookie却返回403(已带表头),我试着打开空间主页的URL,返回的是HTML文件,这很正常,没有JS文件。但为什么打开JS的请求却报错403了呢?这个问题暂先放着。其实空间更蛋疼的问题还没解决呢——Cookie,普通的登录(例如知乎)是发送个表单就行了,但QQ空间的表单,年轻的我没有找到(估计要一点点调试看它的加密算法了,之前的爬虫我是用phantomjs模拟浏览器获取到的)。百度和Google也没有搜到结果,甚至爬QQ空间人就很少,大伙对它没兴趣?

QQ空间爬不成,我试一下微博。很明显大伙对微博的兴趣就高很多了,已经有加密算法和构造表单的方法了。而且我在查看Cookie的时候看到新浪的Cookie有效期是六天左右(未检验)(QQ空间的Cookie有效期在几十分钟到十几个钟不等),如果是这样的话我们就算手动输入Cookie那也没什么呀。不过微博还有一个问题,JS加载。网上的说法是构造下载中间件,具体还有待解决。不过此时看到scrapy的那张架构图(如下)就另外一种感觉了呀,终于对各个部分有一点认识了!不过如果用Redis实现分布式的话Pipeline和Scheduler之间是不是应该要有个数据流通呀?

感觉当前的难点更多的还是在右半边,获取数据。

接下来,构造中间件。

继续勘探,尽快熟悉Scrapy与分布式!

转载请注明出处,谢谢!(原文链接:http://blog.csdn.net/bone_ace/article/details/50811004

时间: 2024-10-15 22:49:32

Scrapy见面第五天的相关文章

scrapy爬虫框架(五)-CrawlSpider

scrapy爬虫框架(五)-CrawlSpider 通过CrawlSpider的链接提取器爬取微信小程序社区的文章 创建爬虫文件 此前要进入爬虫文件夹,使用cd命令,再创建模版(templ)爬虫 scrapy genspider -t crawl 爬虫名 网站域名 # -*- coding: utf-8 -*- import scrapy from scrapy.linkextractors import LinkExtractor from scrapy.spiders import Craw

scrapy专题(五):自定义扩展

通过scrapy提供的扩展功能, 我们可以编写一些自定义的功能, 插入到scrapy的机制中 一.编写一个简单的扩展 我们现在编写一个扩展, 统计一共获取到的item的条数我们可以新建一个extensions.py # extendsions.py # -*- coding: utf-8-*- from scrapy import signals from scrapy.exceptions import NotConfigured class StatsItemCount(object): d

python3下scrapy爬虫(第五卷:利用cookie模拟登陆抓取个人中心页面)

之前我们爬取的都是那些无需登录就要可以使用的网站但是当我们想爬取自己或他人的个人中心时就需要做登录,一般进入登录页面有两种 ,一个是独立页面登陆,另一个是弹窗,我们先不管验证码登陆的问题 ,现在试一下直接登陆的爬取: 爬虫是模拟人的行为来请求网页读取数据的现在我们划分一下过程,从登陆到获取: 先看一下我们到个人中心的过程: 登陆界面->输入账号密码->进入个人中心 1 进入登陆页面 可以说是第一次请求 此时会产生相应的COOKIE值,因为你只要先进入到页面才可以进行密码输入等行为 cookie

Learning Scrapy笔记(六)- Scrapy处理JSON API和AJAX页面

摘要:介绍了使用Scrapy处理JSON API和AJAX页面的方法 有时候,你会发现你要爬取的页面并不存在HTML源码,譬如,在浏览器打开http://localhost:9312/static/,然后右击空白处,选择"查看网页源代码",如下所示: 就会发现一片空白 留意到红线处指定了一个名为api.json的文件,于是打开浏览器的调试器中的Network面板,找到名为api.json的标签 在上图的红色框里就找到了原网页中的内容,这是一个简单的JSON API,有些复杂的API会要

Scrapy 组件的具体用法

一.Spider 用法 在 Scrapy 中,要抓取网站的链接配置.抓取逻辑.解析逻辑都是在 Spider 里完成的.Spider 的一些基础属性和基础方法: name:爬虫名字,Spider的名字定义了 Scrapy 是如何定位并初始化 Spider的,必须是唯一的.例如爬取 mywebsite.com,那么该 Spider通常被命名为 mywebsite. allowed_domains:允许爬取的域名,不在在范围的链接不会被根据爬取. start_urls:它是起始 URL 列表,当我们没

《Python网络数据采集》读书笔记(四)

1.遍历单个域名 维基百科那些指向词条页面(不是指向其他内容页面)的链接有三个共同点: ? 它们都在id是bodyContent的div标签里 ? URL链接不包含分号 ? URL链接都以/wiki/开头 # -*- coding: utf-8 -*- import re from urllib.request import urlopen from bs4 import BeautifulSoup html = urlopen("http://en.wikipedia.org/wiki/Kev

第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的查询

第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲-elasticsearch(搜索引擎)的查询 elasticsearch(搜索引擎)的查询 elasticsearch是功能非常强大的搜索引擎,使用它的目的就是为了快速的查询到需要的数据 查询分类: 基本查询:使用elasticsearch内置的查询条件进行查询 组合查询:把多个查询条件组合在一起进行复合查询 过滤:查询同时,通过filter条件在不影响打分的情况下筛选数据

第三百五十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—将bloomfilter(布隆过滤器)集成到scrapy-redis中

第三百五十八节,Python分布式爬虫打造搜索引擎Scrapy精讲-将bloomfilter(布隆过滤器)集成到scrapy-redis中,判断URL是否重复 布隆过滤器(Bloom Filter)详解 基本概念 如果想判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定.链表,树等等数据结构都是这种思路. 但是随着集合中元素的增加,我们需要的存储空间越来越大,检索速度也越来越慢.不过世界上还有一种叫作散列表(又叫哈希表,Hash table)的数据结构.它可以通过一

第三百五十六节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy分布式爬虫要点

第三百五十六节,Python分布式爬虫打造搜索引擎Scrapy精讲-scrapy分布式爬虫要点 1.分布式爬虫原理 2.分布式爬虫优点 3.分布式爬虫需要解决的问题