scrapy

Scrapy - Creating nested JSON Object

落花浮王杯 提交于 2021-02-10 18:15:16
问题 I'm learning how to work with Scrapy while refreshing my knowledge in Python?/Coding from school. Currently, I'm playing around with imdb top 250 list but struggling with a JSON output file. My current code is: # -*- coding: utf-8 -*- import scrapy from top250imdb.items import Top250ImdbItem class ActorsSpider(scrapy.Spider): name = "actors" allowed_domains = ["imdb.com"] start_urls = ['http://www.imdb.com/chart/top'] # Parsing each movie and preparing the url for the actors list def parse

投资理财:基金杂谈

房东的猫 提交于 2021-02-10 14:18:49
点击上方蓝字关注"程序员Bob"呀~ 你永远赚不到超出你认知范围之外的钱,除非靠着运气;但是运气赚到的钱,最后往往又会靠着实力亏掉。 或许,去年怎么也想不到,这公众号一写就是一年,从开始不知道写啥,到写的文章被别人赞同、喜欢,这其中的快乐或许只有自己体验才会知道。 虽然之前写过一点关于股票投资的文章,但进入股市对本金的要求还是很高的,比如买股必须是100股起步,按照腾讯今年年终给员工的福利便是100股,价值大概在七八万左右的样子,腾讯还真是大手笔。 所以说,股市一般还是要进场费的,对于学生的我,自然承担不起。 那么,小编就选择基金这个和股票相关的投资产品。 首先说明一下:本文是个人对投资理财的一些小分享,并不代表投资建议,也不要将本文内容构成你投资决策的唯一参考要素! 1.个人投资经历 首先,说一下我个人的投资经历,小编是在去年11月份开始接触基金,虽不是经济专业,但阅读的书籍能够保证我在适当的资金范围内正常操作。 所以说,如果你不是经济学相关的,而且又想理财啥的,那么小编建议首选基金开始你的试错之旅。 在玩理财之前,小编也建议除非你是对投资感兴趣,不然还是别浪费太多的时间在投资上,比如大家都建议你买基金,并且给你相关的建议,那么你要知道,没有钱会从天上来,你靠运气赚来的钱,只会以另一种形式流出去而已。 要永远相信一句话:你永远赚不到超出你认知范围之外的钱,除非靠着运气

手把手教你用Python实现批量文件的压缩处理

让人想犯罪 __ 提交于 2021-02-10 09:59:16
点击上方“ Python爬虫与数据挖掘 ”,进行关注 回复“ 书籍 ”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 近乡情更怯,不敢问来人。 一、前言 大家好,我是崔艳飞。接到项目求助,需要对上千个文件夹中的文件进行压缩处理,并要删除源文件,只保留压缩后的压缩文件,数据量大,手动完成耗时耗力,用Python处理再合适不过了。 二、项目目标 批量对文件夹的内容进行压缩处理,满足客户要求。 三、项目准备 软件:PyCharm 需要的库:os, shutil,zipfile 四、项目分析 1)如何读取源文件? 利用OS库,获取文件夹名list,利用for循环,轻松拿到要压缩的源文件。 2)如何进行压缩处理? 利用zipfile库中的zipfile.ZipFile()对获取到的文件进行压缩处理。 3)如何删除源文件? 先利用os库的remove()删除文件,再利用shutil库的rmtree()删除空文件夹。 五、项目实现 1、第一步导入需要的三个库 import os as os import shutil import zipfile 2、第二步定义删除文件函数和压缩文件函数 def del_ (rootdir) : filelist = [] filelist = os.listdir(rootdir) # 列出该目录下的所有文件名 for f in

Scrapy only returns first result

南笙酒味 提交于 2021-02-10 09:35:51
问题 I'm trying to scrape preformatted html seen here. But my code only returns 1 price instead of all 10 prices. Code seen here: class MySpider(BaseSpider): name = "working1" allowed_domains = ["steamcommunity.com"] start_urls = ["http://steamcommunity.com/market/search/render/?query=&appid=440"] def parse(self, response): sel = Selector(response) price = sel.xpath("//text()[contains(.,'$')]").extract()[0].replace('\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t','') print price I'm super new to scrapy/xpath so I

Scrapy only returns first result

。_饼干妹妹 提交于 2021-02-10 09:31:52
问题 I'm trying to scrape preformatted html seen here. But my code only returns 1 price instead of all 10 prices. Code seen here: class MySpider(BaseSpider): name = "working1" allowed_domains = ["steamcommunity.com"] start_urls = ["http://steamcommunity.com/market/search/render/?query=&appid=440"] def parse(self, response): sel = Selector(response) price = sel.xpath("//text()[contains(.,'$')]").extract()[0].replace('\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t','') print price I'm super new to scrapy/xpath so I

Scrapy only returns first result

家住魔仙堡 提交于 2021-02-10 09:30:49
问题 I'm trying to scrape preformatted html seen here. But my code only returns 1 price instead of all 10 prices. Code seen here: class MySpider(BaseSpider): name = "working1" allowed_domains = ["steamcommunity.com"] start_urls = ["http://steamcommunity.com/market/search/render/?query=&appid=440"] def parse(self, response): sel = Selector(response) price = sel.xpath("//text()[contains(.,'$')]").extract()[0].replace('\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t','') print price I'm super new to scrapy/xpath so I

Gerapy的简单使用

无人久伴 提交于 2021-02-09 11:33:44
1. Scrapy :是一个基于 Twisted的异步IO框架 ,有了这个框架,我们就不需要等待当前URL抓取完毕之后在进行下一个URL的抓取,抓取效率可以提高很多。 2. Scrapy-redis :虽然Scrapy框架是 异步加多线程 的,但是我们只能在一台主机上运行,爬取效率还是有限的,Scrapy-redis库为我们提供了Scrapy 分布式的队列,调度器,去重 等等功能,有了它,我们就可以将多台主机组合起来,共同完成一个爬取任务,抓取的效率又提高了。 3. Scrapyd :分布式爬虫完成之后,接下来就是代码部署,如果我们有很多主机,那就要逐个登录服务器进行部署,万一代码有所改动..........可以想象,这个过程是多么繁琐。Scrapyd是 专门用来进行分布式部署的工具 ,它提供HTTP接口来帮助我们部署,启动,停止,删除爬虫程序,利用它我们可以很方便的完成Scrapy爬虫项目的部署。 4. Gerapy :是一个 基于Scrapyd,Scrapyd API,Django,Vue.js搭建的分布式爬虫管理框架 。简单点说,就是用上述的Scrapyd工具是在命令行进行操作,而Gerapy将命令行和图形界面进行了对接,我们只需要点击按钮就可完成部署,启动,停止,删除的操作。 Gerapy的操作 本次操作是基于, 1.开启Gerapy 服务,前提是已经安装好了,Gerapy

分布式爬虫管理框架Gerapy安装及部署流程

|▌冷眼眸甩不掉的悲伤 提交于 2021-02-09 11:33:24
Gerapy 是一款国人开发的爬虫管理软件(有中文界面)    是一个管理爬虫项目的可视化工具,把项目部署到管理的操作全部变为交互式,实现批量部署,更方便控制、管理、实时查看结果。 gerapy和scrapyd的关系就是,我们可以通过gerapy中配置scrapyd后,不使用命令,直接通过图形化界面开启爬虫。 》》安装 pip install gerapy 》》配置环境变量 C:\Users\wangjialu\AppData\Local\Programs\Python\Python37\Scripts\ 》》cmd 初始化工作目录 >gerapy init 》》进入该目录初始数据库,会生成一个SQLite数据库,数据库保存主机的配置信息和部署版本。 > cd gerapy >gerapy migrate 》》启动服务 http://127.0.0.1:8000 访问界面 >gerapy runserver 》》部署项目 我们将Scrapy项目放在 gerapy/project 目录下。 添加Scrapy远程服务,我们的scrapy项目发布到Scrapyd上面。 或者 打开你的爬虫项目根目录 配置scrapy.cfg [deploy:abckg] url = http://localhost:6800/ project = Abckg #url 把#去掉 输入命令:scrapyd

gerapy的初步使用(管理分布式爬虫)

给你一囗甜甜゛ 提交于 2021-02-09 11:08:10
一.简介与安装   Gerapy 是一款分布式爬虫管理框架,支持 Python 3,基于 Scrapy、Scrapyd、Scrapyd-Client、Scrapy-Redis、Scrapyd-API、Scrapy-Splash、Jinjia2、Django、Vue.js 开发。   特点: 更方便地控制爬虫运行 更直观地查看爬虫状态 更实时地查看爬取结果 更简单地实现项目部署 更统一地实现主机管理 更轻松地编写爬虫代码(几乎没用,感觉比较鸡肋)   安装: pip install gerapy #gerapy 判断是否安装成功 F:\gerapy>gerapy Usage: gerapy init [--folder=<folder>] gerapy migrate gerapy createsuperuser gerapy runserver [<host:port>] 二.使用   1.初始化项目 gerapy init #执行完毕之后,便会在当前目录下生成一个名字为 gerapy 的文件夹,接着进入该文件夹,可以看到有一个 projects 文件夹 #或者 gerapy init 指定的绝对目录 #这样会在指定的文件夹生成一个gerapy文件夹   2.初始化数据库   进入新生成的gerapy文件夹   cd 到gerapy目录 cd gerapy gerapy

Python爬取链家二手房源信息

杀马特。学长 韩版系。学妹 提交于 2021-02-09 09:53:35
爬取链家网站二手房房源信息,第一次做,仅供参考,要用scrapy。 import scrapy,pypinyin,requests import bs4 from ..items import LianjiaItem class LianjiaSpider(scrapy.Spider): name = 'lianjia_dl' allowed_domains = ['www.lianjia.com'] start_urls = [] url_0 = 'https://www.lianjia.com/city/' res = requests.get(url_0) bs_cs = bs4.BeautifulSoup(res.text,'html.parser') xinxi_cs = bs_cs.find_all('div',class_='city_province') for data_cs in xinxi_cs: cs_s = data_cs.find('ul').find_all('li') for cs_1 in cs_s: yess = cs_1.find('a')['href'] if yess.find('fang')>=0: #若fang字符串在yess中,则yess.find('fang')是大于等于0的,显示在字符串中的位置 continue else: