scrapy

使用Python的Scrapy框架编写web爬虫的简单示例

三世轮回 提交于 2020-04-07 04:53:55
在这个教材中,我们假定你已经安装了Scrapy。假如你没有安装,你可以参考这个 安装指南 。 我们将会用 开放目录项目(dmoz) 作为我们例子去抓取。 这个教材将会带你走过下面这几个方面: 创造一个新的Scrapy项目 定义您将提取的Item 编写一个 蜘蛛 去抓取网站并提取 Items 。 编写一个 Item Pipeline 用来存储提出出来的Items Scrapy由 Python 写成。假如你刚刚接触Python这门语言,你可能想要了解这门语言起,怎么最好的利用这门语言。假如你已经熟悉其它类似的语言,想要快速地学习Python,我们推荐 这种深入方式学习Python 。假如你是新手,想从开始使用Python学习,可以尝试去看看非程序员 Python资源列表 。 创造一个项目 在你要抓取之前,首先要建立一个新的Scrapy项目。然后进去你的存放代码目录,执行如下命令。 scrapy startproject tutorial 它将会创建如下的向导目录: 复制代码 代码如下: tutorial/ scrapy.cfg tutorial/ __init__.py items.py pipelines.py settings.py spiders/ __init__.py ... 这是一些基本信息: scrapy.cfg: 项目的配置文件。 tutorial/:

scrapy爬取word转换HTML页面 出现中文乱码

前提是你 提交于 2020-04-06 11:02:42
def parse(self, response): print('========== parse ==========') print(response.text[:100]) body = response.body encodings = ['utf-8', 'gbk', 'gb2312', 'iso-8859-1', 'latin1'] for encoding in encodings: try: print('========== decode ' + encoding) print(body.decode(encoding)[:100]) print('========== decode end\n') except Exception as e: print('########## decode {0}, error: {1}\n'.format(encoding, e)) pass 来源: oschina 链接: https://my.oschina.net/u/4446794/blog/3217093

scrapy爬虫, gerapy基于scrapy分布式爬虫的介绍

蓝咒 提交于 2020-04-06 10:40:21
python3.8,scrapy 主要使用pip install 安装,安装python3.8 安装注意事项: 1在安装这些组件是可能需要VS C++ Build Tools(vs2015版以上,直接安装vs2019也可以)需要安装。 2同时还需要安装.net4.6或及其以上。 scrapy--2.0.1 Twisted--20.3.0 gerapy--0.9.2 pywin32--220 python下载:https://www.python.org/downloads/windows/ twisted下载:http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted pywin32下载:https://nchc.dl.sourceforge.net/project/pywin32/pywin32/ python -m venv python_demo 使用python3的venv创建虚拟环境也可以直接使用系统环境 还有virtualenv也可以完成类似功能这里使用系统自带的 cd python_demo scripts/active 激活venv创建的 python_demo虚拟环境 scripts/deactive 退出venv创建的 python_demo虚拟环境 python -m pip install --upgrade pip

Scrapy爬取女神照片

独自空忆成欢 提交于 2020-04-06 05:56:19
使用Scrapy趴一趴美女图 Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和 自动化测试 。 Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。 Scratch,是抓取的意思,这个Python的爬虫框架叫Scrapy,大概也是这个意思吧,就叫它:小刮刮吧。 Scrapy 使用了 Twisted异步网络库来处理网络通讯。整体架构大致如下: Scrapy主要包括了以下组件: 引擎(Scrapy) 用来处理整个系统的数据流处理, 触发事务(框架核心) 调度器(Scheduler) 用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址 下载器(Downloader) 用于下载网页内容, 并将网页内容返回给蜘蛛(Scrapy下载器是建立在twisted这个高效的异步模型上的) 爬虫(Spiders) 爬虫是主要干活的, 用于从特定的网页中提取自己需要的信息, 即所谓的实体(Item)

Crawlab尝试

老子叫甜甜 提交于 2020-04-06 03:42:26
官方: https://docs.crawlab.cn/ https://github.com/crawlab-team/crawlab Crawlab配置 Windows 安装 docker: https://www.docker.com/products/docker-desktop 安装python环境: 我选 Pycharm+Anaconda 安装docker-compose: pip install docker-compose 创建项目文件:docker-compose.yml 启动: docker-compose up -d 测试服务: http://localhost:8080/ docker-compose.yml version: '3.3' services: master: image: tikazyq/crawlab:latest container_name: master environment: # CRAWLAB_API_ADDRESS: "https://<your_api_ip>:<your_api_port>" # backend API address 后端 API 地址. 适用于 https 或者源码部署 CRAWLAB_SERVER_MASTER: "Y" # whether to be master node 是否为主节点,主节点为

scrapy专题(二):下载中间件

拟墨画扇 提交于 2020-04-05 18:41:53
下载器中间件是介于Scrapy的request/response处理的钩子框架,是用于全局修改Scrapy request和response的一个轻量、底层的系统。 1.激活Downloader Middleware 要激活下载器中间件组件,将其加入到 DOWNLOADER_MIDDLEWARES 设置中。 该设置是一个字典(dict),键为中间件类的路径,值为其中间件的顺序(order)。像下面这样 DOWNLOADER_MIDDLEWARES = { 'myproject.middlewares.CustomDownloaderMiddleware': 543, } DOWNLOADER_MIDDLEWARES 设置会与Scrapy定义的 DOWNLOADER_MIDDLEWARES_BASE 设置合并(但不是覆盖), 而后根据顺序(order)进行排序,最后得到启用中间件的有序列表: 第一个中间件是最靠近引擎的,最后一个中间件是最靠近下载器的。 关于如何分配中间件的顺序settings里面的Scrapy默认BASE设置 ,而后根据你想要放置中间件的位置选择一个值。 由于每个中间件执行不同的动作,你的中间件可能会依赖于之前(或者之后)执行的中间件,因此顺序是很重要的。 如果你想禁止内置的(在 DOWNLOADER_MIDDLEWARES_BASE 中设置并默认启用的)中间件,

Scrapy爬虫小demo总结

落花浮王杯 提交于 2020-04-03 08:20:42
一、 Scrapy入坑。 a) Scrapy的安装。 这个没什么可讲的,网上一大把。 注意的问题,可能我下载的是32位的python,出现了pywin32没法用的情况,这个直接pip install pypiwin32 就好。 b) 安装验证。 scrapy genspider baidu www.baidu.com 建立一个爬百度的爬虫。 scrapy crawl baidu 成功爬取数据。 c) Scrapy项目创建: 首先进入要创建项目的目录:cd xxx 然后进行创建:scrapy startproject demo1(项目名字是demo1) 进入项目目录,进行抓取目标的设置:cd demo1; scrapy genspider demo1demo quotes.toscrape.com 上面的两步设置好了之后,就有如下结构: 然后我使用的pycharm编译器,,,在命令行。这里 输入命令进行爬取, 注意,,,我在生成的文件中使用了中文注释,然后就报编码错误,所以文件汇总得保证英文环境。 二、 Scrapy基本使用 经过如上的折腾,scrapy总算是可以大概跑起来了,接下来我们来看看怎么使用(emmmm,说实话我也用的不好,说个大概吧,就是记录下这个磨人的小demo)。 好,我们从使用的第一步说起,首先,设置爬取网址: (打码真好看,^_<) 然后就是函数回调,scrapy

如何免费创建云端爬虫集群

为君一笑 提交于 2020-03-31 01:42:49
在线体验 scrapydweb.herokuapp.com 网络拓扑图 注册帐号 Heroku 访问 heroku.com 注册免费账号(注册页面需要调用 google recaptcha 人机验证,登录页面也需要 科学地进行上网 ,访问 app 运行页面则没有该问题),免费账号最多可以 创建和运行5个 app 。 Redis Labs(可选) 访问 redislabs.com 注册免费账号,提供 30MB 存储空间 ,用于下文通过 scrapy-redis 实现 分布式爬虫 。 通过浏览器部署 Heroku app 访问 my8100/scrapyd-cluster-on-heroku-scrapyd-app 一键部署 Scrapyd app。(注意更新页面表单中 Redis 服务器的主机,端口和密码) 重复第1步完成4个 Scrapyd app 的部署,假设应用名称为 svr-1 , svr-2 , svr-3 和 svr-4 访问 my8100/scrapyd-cluster-on-heroku-scrapydweb-app 一键部署 ScrapydWeb app,取名 myscrapydweb (可选)点击 dashboard.heroku.com/apps/myscrapydweb/settings 页面中的 Reveal Config Vars 按钮相应添加更多

爬虫部署 --- scrapyd部署爬虫 + Gerapy 管理界面 scrapyd+gerapy部署流程

自作多情 提交于 2020-03-30 21:19:52
---------scrapyd部署爬虫--------------- 1.编写爬虫 2.部署环境 pip install scrapyd pip install scrapyd-client 启动scrapyd的服务:cmd:>scrapyd(必须处于开启状态) 在爬虫根目录执行:scrapyd-deploy,如果提示不是内部命令,需要修改配置文件。 3.发布工程到scrapyd 修改scrapy.cfg,去掉url前的# 进入到scrapy项目根目录,执行:scrapyd-deploy <target> -p <projectname>提示:(target:scrapy.cfg中[deploy:***])(projectname:scrapy.cfg中project = XXX) (#url中的#去掉) 4.启动爬虫 第一种方法:Django中view.py class StartSpider(View): def get(self,request): url = 'http://localhost:6800/schedule.json' data = {'project': 'ScrapyAbckg', 'spider': 'abckg'} print( requests.post(url=url, data=data)) return JsonResponse({

python爬虫

廉价感情. 提交于 2020-03-30 20:54:21
   一、python模块 1、urllib.request常规使用 import urllib.request #1、指定URL url = 'http://www.baidu.com' #2、发起请求:urlopen可以根据指定的url发起请求,且返回一个响应对象 response = urllib.request.urlopen(url=url) #3、获取页面数据:read函数返回的就是响应对象中存储的页面数据(byte) response_text = response.read() #4、持久化存储 with open('./baidu.html','wb') as f: f.write(response_text) print('写入成功') urllib.request urllib.request处理url中文 import urllib.request import urllib.parse #1、指定URL # url = 'https://tieba.baidu.com/f?ie=utf-8&kw=你好&fr=search' url = 'https://tieba.baidu.com/f?ie=utf-8&kw=%s&fr=search' #url不可以存在非ascii编码的字符数据 wd = urllib.parse.quote("你好") new