scrapy

利用scrapy-client发布爬虫的远程服务器

南楼画角 提交于 2020-12-24 02:32:32
一.环境准备   远程服务器必须装有scapyd,我们使用的机器必须有scrapy-client(我这里是windows),并确保这两者正常安装并启动。 二.客户端准备上传   首先进入到爬虫项目的根文件夹: scrapyd-deploy     这样就是成功了。 三.配置爬虫项目    打开爬虫项目中的scrapy.cfg文件,这个文件就是给scrapyd-deploy使用的 将url这行代码解掉注释,并且给设置你的部署名称   再次执行scrapyd-deploy -l 启动服务,可以看到设置的名称 四.打包项目   1.开始打包前,执行命令:scrapy list,这个命令执行成功说明可以打包了,如果没执行成功说明还有工作没完成      这边会显示的是我的爬虫项目中具有的爬虫名称:jd   2.执行打包命令: scrapyd-deploy 部署名称 -p 项目名称     如下显示表示scrapy项目打包成功     如果出现     版本不对,建议安装pip install scrapyd==1.1.1,直到你的egg文件夹中有项目即可        3.上传运行爬虫 curl http://远程ip:6800/schedule.json -d project=项目名称 -d spider=爬虫名称   执行后,如果出现   则爬虫运行成功   可以去网页中106.12

scrapy爬虫-scrapy-redis分布式

风格不统一 提交于 2020-12-23 03:55:43
1、如何将一个scrapy爬虫项目修改成为一个简单的分布式爬虫项目 官方文档: https://scrapy-redis.readthedocs.io/en/stable/ 只用修改scrapy项目的两个文件就可以了 一个是爬虫组件文件: # -*- coding: utf-8 -*- import scrapy from scrapy_redis.spiders import RedisSpider # 自定义爬虫类的继承类不再是scrapy.spiders下面的爬虫类, # 而是scrapy-redis.spiders下面的爬虫类 class DistributedSpiderSpider(RedisSpider): name = ' distributed_spider ' allowed_domains = [ ' wh.lianjia.com ' ] # 将start_urls替换为redis_key # start_urls = ['https://wh.lianjia.com/ershoufang/'] redis_key = " myspider:start_urls " def parse(self, response): print (response.meta) item = dict() item[ " province " ] = " 湖北 " item[

scrapy爬虫系列之开头--scrapy知识点

假如想象 提交于 2020-12-23 03:41:36
介绍:Scrapy是一个为了爬取网站数据、提取结构性数据而编写的应用框架,我们只需要实现少量的代码,就能够快速抓取。 Scrapy使用了Twisted异步网络框架,可以加快我们的下载速度。 0、说明:   保存数据的方法有4种(json、jsonl、csv、xml),-o 输出指定格式的文件   scrapy crawl 爬虫名称 -o aa.json   在编写Spider时,如果返回的不是item对象,可以通过scrapy crawl 爬虫名称 -o aa.json 爬取数据输出到本地,保存为aa.json文件 1、使用步骤   1.1 新建项目:scrapy startproject xxx   1.2 生成爬虫:scrapy genspider aaa "http://www.aaa.com"   1.3 明确目标:编写items.py,明确要提取的数据   1.4 编写爬虫:spiders/xx.py,编写爬虫文件,处理请求和响应,以及提取数据(yield item)   1.5 存储内容:pipelines.py,编写管道文件,处理spider返回的item数据   1.6 设置配置:settings.py, 启动管道组件,以及其他相关配置   1.7 执行爬虫:scrapy aaa 爬虫名称 2、安装:   pip3 install scrapy 3、命令  

5个python爬虫教材,让小白也有爬虫可写,含视频教程!

时光总嘲笑我的痴心妄想 提交于 2020-12-22 07:26:23
认识爬虫   网络爬虫,如果互联网是一张蜘蛛网,网络爬虫既是一个在此网上爬行的蜘蛛,爬了多少路程即获取到多少数据。 python写爬虫的优势   其实以上功能很多语言和工具都能做,但是用python爬取的速度更快,代码最简单,总而言之就是高效!与其它的编程语言作比较,python爬去网站的文档的接口更清晰明了,python的各种包提供给开发者访问网页文档的API。请先静下心看案例介绍。再进入里面寻找视频教程   由认识爬虫可知,在互联网上爬去内容,必然会有访问浏览器这个过程。程序员爬取网站内容必须模拟浏览器的行为,各个网站都有反爬措施,对于那些有问题的爬虫,很容易被封禁。Python丰富又优秀的库就起到非常重要的作用了,第三方库可以快速帮助开发者实现模拟user agent的行为编造能适合该网页的请求。 为什么学习Python,要从爬虫入门     爬虫是最简单的,比起web开发、人工智能,爬虫不需要你有多大的基础知识和你积累的爬虫以外的知识储备。基本所有学习Python的程序员都是学完基础知识后,自己的第一个项目一定是爬虫。有趣而又简单,当然要选择它。    分享项目之前,我先分享一下我的学习群 五个零基础都可以学习的Python爬虫教程 ####一、利用Scrapy爬虫框架爬取天气数据 非常容易实操,特别简单!稍微有点Python语法基础就可以跟着敲代码了。 二

python爬虫之基于scrapy_redis的分布式爬虫

前提是你 提交于 2020-12-19 04:23:19
基于redis的分布式爬虫 问题: (1)为什么原生的scrapy框架不可以自己实现分布式爬虫? 原因有两个: (1)因为多台机器上部署的scrapy会各自拥有各自的调度器,这样就使得多台机器无法分配start_urls列表中的url(调度器不能被共享) (2)多台机器爬取到的数据无法通过同一个管道对数据进行统一的数据持久出存储。(管道不能被共享) (2)scrapy-redis组件的作用是什么? 它提供了可以被共享的调度器和管道 (3)如何使用scrapy-redis组件来实现分布式爬虫? 其一:基于该组件的RedisSpider类 其二:基于该组件的RedisCrawlSpider类 但是这两种实现分布式爬虫的实现流程是一致的 分布式的实现流程: ####1 下载scrapy-redis组件: pip install scrapy_redis ####2 创建工程 ####3 创建爬虫文件:RedisSpider RedisCrawlSpider - scrapy genspider -t crawl xxx www.xxx.com ####4 对爬虫文件中的相关属性进行修改: 导入:from scrapy_redis.spiders import RedisCrawlSpider 将爬虫类的父类修改成基于RedisSpider或者RedisCrawlSpider。注意

scrapy-redis分布式爬虫实战

跟風遠走 提交于 2020-12-18 09:32:53
Scrapy-Redis代码实战 Scrapy 是一个通用的爬虫框架,但是不支持分布式,Scrapy-redis是为了更方便地实现Scrapy分布式爬取,而提供了一些以redis为基础的组件(仅有组件)。 scrapy-redis在scrapy的架构上增加了redis,基于redis的特性拓展了如下四种组件: Scheduler Duplication Filter Item Pipeline Base Spider scrapy-redis架构 Scheduler Scrapy原本的queue是不支持多个spider共享一个队列的,scrapy-redis通过将queue改为redis实现队列共享。 Duplication Filter Scrapy中通过Python中的集合实现request指纹去重,在scrapy-redis中去重是由Duplication Filter组件来实现的,它通过redis的set不重复的特性,巧妙的实现了DuplicationFilter去重。 Item Pipeline 引擎将(Spider返回的)爬取到的Item给Item Pipeline,scrapy-redis 的Item Pipeline将爬取到的 Item 存入redis的 items queue。修改过Item Pipeline可以很方便的根据 key 从 items

爬虫爬取抖音热门音乐

老子叫甜甜 提交于 2020-12-18 07:42:25
爬取抖音的热门音乐 这个就相对来说简单一点,这是代码运行的结果 获取音乐的网址https://kuaiyinshi.com/hot/music/?source=dou-yin&page=1 打开该网页F12,F5刷新 做义工只需要以上的数据 根据beautifulsoup去获取,直接上代码 headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36' } # 保存路径 save_path = "G: \\ Music \\ douyin \\ " url = "https://kuaiyinshi.com/hot/music/?source=dou-yin&page=1" # 获取响应 res = requests.get(url , headers =headers) # 使用 beautifulsoup 解析 soup = BeautifulSoup(res.text , 'lxml' ) # 选择标签获取最大页数 max_page = soup.select( 'li.page-item > a' )[- 2 ].text # 循环请求 for page

Python3 Scraping all informations of one page

﹥>﹥吖頭↗ 提交于 2020-12-15 05:24:26
问题 My Spider: import scrapy class LinkSpider(scrapy.Spider): name = "page" start_urls = [ 'https://www.topart-online.com/de/Blattzweige-Blatt-und-Bluetenzweige/l-KAT282?seg=1' ] def parse(self, response): yield{ 'ItemSKU': response.xpath('//span[@class="sn_p01_pno"]/text()').getall(), 'title': response.xpath('//div[@class="sn_p01_desc h4 col-12 pl-0 pl-sm-3 pull-left"]/text()').getall(), 'ItemEAN': response.xpath('//div[@class="productean"]/text()').getall(), 'Delivery_Status': response.xpath('/

Scrapy parse pagination without next link

删除回忆录丶 提交于 2020-12-13 03:36:41
问题 I'm trying to parse a pagination without next link. The html is belove: <div id="pagination" class="pagination"> <ul> <li> <a href="//www.demopage.com/category_product_seo_name" class="page-1 ">1</a> </li> <li> <a href="//www.demopage.com/category_product_seo_name?page=2" class="page-2 ">2</a> </li> <li> <a href="//www.demopage.com/category_product_seo_name?page=3" class="page-3 ">3</a> </li> <li> <a href="//www.demopage.com/category_product_seo_name?page=4" class="page-4 active">4</a> </li>