scrapy

「Python:Scrapy爬虫框架」

一世执手 提交于 2020-12-04 09:06:36
当我们开始学习python爬虫的时候,都是先学习不同的爬虫库,然后开始通过单脚本来进行爬虫代码的编写,从数据提取到解析到存储都需要自己编写代码。但是Scrapy爬虫框架是可以将数据字段定义、网络请求和解析,数据处理和存储分不同的部分形成一个整体,极大的方便了代码的理解和编写。 针对Scrapy的安装网上有很多,这里就不一一介绍了,我们以简书网专题数据爬取为例来同步介绍相关定义和代码实践。 1、项目创建 创建一个Scrapy项目非常简单,一般快速创建可以通过终端直接输入如下代码: scrapy startproject zhuanti_new 如果要在不同的文件中创建此项目,就需要先找到对应的文件路径,当然你也可以通过pycharm,直接在对应的文件中,点击左下角终端进行创建,项目就直接在对应的项目文件中创建了一个Scrapy项目 2、Scrapy项目文件介绍 通过下面截图可以看到一个Scrapy项目有哪些文件,同时还需要创建和生成哪些文件,接下来逐一介绍。 (1)最顶层的zhuanti_new文件夹是Scrapy的项目名称 (2)第2层有4个文件: 第1个:和项目名称相同的文件,就是我们通常叫的爬虫包,所有的爬虫代码都在这个包里面 第2个:mian文件,是用来运行这个项目的主函数代码文件,代码写完后通过这个文件总体运行 第3个:配置文件,说明一下默认设置文件的位置为zhuanti

Python 爬虫之Scrapy《上》

霸气de小男生 提交于 2020-12-04 07:30:31
1 什么是Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。 2 工作流程是怎么样的 下图是从网络上找的一张Scrapy的工作流程图,并且标注了相应的中文说明信息: 3 Scrapy框架的六大组件 它们分别是: 调度器(Scheduler) 下载器(Downloader) 爬虫(Spider) 中间件(Middleware) 实体管道(Item Pipeline) Scrapy引擎(Scrapy Engine) 4 工作流程如下 Step1 . 当爬虫(Spider)要爬取某URL地址的页面时,使用该URL初始化Request对象提交给引擎(Scrapy Engine),并设置回调函数,Spider中初始的Request是通过调用start_requests() 来获取的。start_requests() 读取start_urls 中的URL,并以parse为回调函数生成Request 。 备注:你所创建的项目名.py 文件里面有一个列表:start_urls=[‘http://lab.scrapyd.cn/page/1/‘] (这是我的示例),这里的start_requests() 读取的start_urls 就是来自于这里,这个文件在大家创建爬虫项目时会自动新建。parse(

Python爬虫进阶之Scrapy

[亡魂溺海] 提交于 2020-12-04 05:36:55
用Scrapy爬取百度图片 前段时间用python的requests库和BeautifulSoup库爬取了猫眼电影关于柯南剧场版的6000条评论 这次我们来使用Scrapy框架来实现爬虫任务——百度“唯美图片”的爬取 整个项目的工程源码我已经上传到GitHub上了,感兴趣的同学可以自行下载,能顺便给我的项目一个star那再好不过了 项目地址:https://github.com/ITBoy-China/scrapy 先展示下我们爬取的结果 看着爬取下来的这一张一张的图,内心的满满的成就感有没有,哈哈,那接下来就跟着我一起来看看如何去实现图片的爬取吧。 一、准备工作 我们此次用到的工具有: python3.7.3 PyCharm5.0.3 Scrapy1.7.4 没有安装scrapy的直接在命令行里pip install scrapy安装scrapy框架,在windows环境下安装scrapy开始会报错,这是因为安装scrapy要安装其它的一些依赖库,lxml、pyOpenSSL、Twisted 、pywin32。 安装好这些库之后,再去安装scrapy就不会报错了。 安装完成之后我们在命令行里输入scrapy看是否安装成功,结果如下: 然后我们开始创建Scrapy项目,在命令行输入: scrapy startproject XXX 其中XXX表示的是你的项目名称

python-爬虫-scrapy

人盡茶涼 提交于 2020-12-04 04:51:54
入门: 下载:pip install scrapy 工程: scrapy startproject 工程名 Spider: scrapy genspider 爬虫名 url (--nolog// 可选不显示日志 ) 简介: 持久化存储: 1 :终端存储: scrapy crawl -o aaa.text 2 : 管道存储 :items 对象即穿过来的 {} 字典,之后存储 3 : open_spider()----> 链接数据库, close_spider()--> 关闭数据库, process_item()---> 存储 代理Ip: 1 自定义下载中间件 middleware.py---》 class MyProxy(object): def process_request(self,request,spider): # 请求ip 更换 request.meta['proxy'] = "http://202.112.51.51:8082" 2 开启下载中间件 DOWNLOADER_MIDDLEWARES = { 'firstBlood.middlewares.MyProxy': 543, } 日志等级: 1 ERROR :错误 WARNING :警告 INFO :一般信息 DEBUG :调试信息(默认) 指定日志信息等级 : settings:LOG_LEVEL = ‘ERROR

如何在vscode中调试python scrapy爬虫

三世轮回 提交于 2020-12-04 03:59:59
本文环境为 Win10 64bit+VS Code+Python3.6,步骤简单罗列下,此方法可以不用单独建一个Py入口来调用命令行 安装Python,从官网下载,过程略,这里主要注意将python目录加入 环境变量 Path中 "D:\Python36\" "D:\Python36\Scripts" 安装Vs code,过程略, 在vscode扩展中安装Python插件 建立你的Scrapy爬虫项目或者拷贝过来 用VSC打开,如果应用了 chromedriver/ phantomjs 一定要拷贝.exe到Python36目录或单独加环境变量 将根目录添加到工作区 开始准备调试,在debug这里选择添加配置,选择 python中的scrapy VSC会自动带入默认的配置如图 这里注意 args就是你的参数: crawl 关键字爬取保留, specs是爬虫名字 换成你自己的,后面两个参数可根据scrapy实际情况增减 此时按F5调试, 如果报“ Unknown command: crawl ”错误,则需要在launch.json的scrapy中增加 "cwd"参数, 设置路径为爬虫项目名目录,一般都在scrapy下的一级 此时再按F5 即可调试到你在spider里的断点了。 Unhandled error in Deferred 如果调试代码出现以上错误,并且没有详细错误信息

8个最高效的Python爬虫框架,你用过几个?

*爱你&永不变心* 提交于 2020-12-02 01:30:34
来源:云栖社区 1.Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。。用这个框架可以轻松爬下来如亚马逊商品信息之类的数据。 项目地址:https://scrapy.org/ 2.PySpider pyspider 是一个用python实现的功能强大的网络爬虫系统,能在浏览器界面上进行脚本的编写,功能的调度和爬取结果的实时查看,后端使用常用的数据库进行爬取结果的存储,还能定时设置任务与任务优先级等。 项目地址:https://github.com/binux/pyspider 3.Crawley Crawley可以高速爬取对应网站的内容,支持关系和非关系数据库,数据可以导出为JSON、XML等。 项目地址:http://project.crawley-cloud.com/ 4.Portia Portia是一个开源可视化爬虫工具,可让您在不需要任何编程知识的情况下爬取网站!简单地注释您感兴趣的页面,Portia将创建一个蜘蛛来从类似的页面提取数据。 项目地址:https://github.com/scrapinghub/portia 5.Newspaper Newspaper可以用来提取新闻、文章和内容分析。使用多线程,支持10多种语言等。 项目地址:https://github.com

MongoDB InvalidDocument: Cannot encode object

匆匆过客 提交于 2020-12-01 09:11:54
问题 I am using scrapy to scrap blogs and then store the data in mongodb. At first i got the InvalidDocument Exception. So obvious to me is that the data is not in the right encoding. So before persisting the object, in my MongoPipeline i check if the document is in 'utf-8 strict', and only then i try to persist the object to mongodb. BUT Still i get InvalidDocument Exceptions, now that is annoying. This is my code my MongoPipeline Object that persists objects to mongodb # -*- coding: utf-8 -*- #

Scrapy: how to disable or change log?

好久不见. 提交于 2020-12-01 08:39:57
问题 I've followed the official tutoral of Scrapy, it's wonderful! I'd like to remove all of DEBUG messages from console output. Is there a way? 2013-06-08 14:51:48+0000 [scrapy] DEBUG: Telnet console listening on 0.0.0.0:6029 2013-06-08 14:51:48+0000 [scrapy] DEBUG: Web service listening on 0.0.0.0:6086 The doc told about to set a LOG_LEVEL, but ... in which file ? Replying, please make referring to this directory structure. It's the mine. Plus, I've a 'test.py' in spyder folder tutorial/ scrapy

自己的Scrapy框架学习之路

你说的曾经没有我的故事 提交于 2020-12-01 02:11:49
开始自己的Scrapy 框架学习之路。 一、Scrapy安装介绍 参考网上资料,先进行安装 使用pip来安装Scrapy 在开始菜单打开cmd命令行窗口执行如下命令即可 pip install Scrapy 安装过程可能会因为环境等问题出现终止,此时可以查看命令行显示提示信息,根据提示分析原因,从而解决问题。‘ pip版本低的时候会提示无法安装 执行 python -m pip install --upgrade pip 执行完成后再执行 pip install Scrapy WIN10遇到的问题 如上图提示:error:信息,发现安装前需要有Visual C++,而且他们也提供了下载地址,可以复制粘贴到地址栏,进行下载,并安装。 如果地址栏输入链接跳转后提示404错误,可自己百度搜索 Microsoft Visual c++14.0 is required,进行下载安装; 再次安装,如下图即可成功 二、Scrapy入门教程 1、在cmd中创建Scrapy项目工程。 我的是在c:\Users\lucky\PycharmProjects\ 在命令行,切换的自己的项目代码的工作空间下,执行如下命令 scrapy startproject ScrapyTest 有如下提示则表示创建成功 2、 对应项目文件中新生成如下文件 解析scrapy框架结构: scrapy.cfg :

Scrapy Shell - How to change USER_AGENT

妖精的绣舞 提交于 2020-11-30 06:26:05
问题 I have a fully functioning scrapy script to extract data from a website. During setup, the target site banned me based on my USER_AGENT information. I subsequently added a RotateUserAgentMiddleware to rotate the USER_AGENT randomly. This works great. However, now when I trying to use the scrapy shell to test xpath and css requests, I get a 403 error. I'm sure this is because the USER_AGENT of the scrapy shell is defaulting to some value the target site has blacklisted. Question: is it