Python3.x使用Scrapy将爬取数据存储成Json

豆瓣电影排名前250链接 https://movie.douban.com/top250

注:前提安装好python及所需的环境

1.scrapy安装

pip install scrapy

如果提示:no module named ‘win32api’ 则使用下面方式解决

pip install pypiwin32pip install scrapy

2.创建项目(进入要创建的目录)

scrapy startproject [项目名称]
例如:scrapy startproject douban_scrapy

3.创建爬虫

scrapy genspider 项目名 "域名"
例如:scrapy genspider douban_scrapy "douban.com"

4.使用工具打开刚刚创建的项目(我是用的是pycharm)

douban_spider.py可见就是编写爬虫的地方了


5.打开settings.py简单的设置如下

ROBOTSTXT_OBEY = False
DOWNLOAD_DELAY = 3DEFAULT_REQUEST_HEADERS = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language': 'en','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36'
}ITEM_PIPELINES = {#存储数据需要将爬取的数据送到pipelines.py,300为优先级'douban_scrapy.pipelines.DoubanScrapyPipelineJson': 300,
}

6.item.py编写需要获取的字段名

import scrapyclass DoubanScrapyItem(scrapy.Item):title = scrapy.Field()daoyan = scrapy.Field()bianju = scrapy.Field()zhuyan = scrapy.Field()type = scrapy.Field()time = scrapy.Field()

7.进入douban_spider.py编写爬虫代码

首先将start_urls改成要爬取的url
如:start_urls = ['https://movie.douban.com/top250']
import scrapy
from douban_scrapy.items import DoubanScrapyItemclass DoubanSpiderSpider(scrapy.Spider):name = 'douban_spider'allowed_domains = ['douban.com']start_urls = ['https://movie.douban.com/top250']def parse(self, response):urls = response.xpath('//ol[@class="grid_view"]/li//div[@class="pic"]/a/@href').getall()print(len(urls))for url in urls:yield scrapy.Request(url=url,callback=self.detail)next_urls = response.xpath('//span[@class="next"]/a/@href').get()next_url = "https://movie.douban.com/top250" + next_urlsprint("我是下一页",next_url,"="*1000)if next_url:yield scrapy.Request(url=next_url,callback=self.parse)def detail(self,response):item = DoubanScrapyItem()item["title"] = response.xpath('//div[@id="content"]/h1/span[1]/text()').get() #标题item["daoyan"] = response.xpath('//div[@id="info"]/span[1]/span[@class="attrs"]/a/text()').get() #导演item["bianju"] = "".join(response.xpath('//div[@id="info"]/span[2]/span[@class="attrs"]//a/text()').getall()) #导演item["zhuyan"] = "".join(response.xpath('//div[@id="info"]/span[3]/span[@class="attrs"]//text()').getall()) #导演item["type"] = "".join(response.xpath('//div[@id="info"]//span[@property="v:genre"]//text()').getall()) #类型item["time"] = response.xpath('//div[@id="info"]//span[@property="v:runtime"]/text()').get() #时长yield item

8.编写pipelines.py代码

import codecs
import json
import osclass DoubanScrapyPipelineJson(object):def __init__(self):self.df = codecs.open("douban.json","w",encoding="utf-8")self.df.write("[")def open_spider(self,spider):print("json存储开始")def process_item(self, item, spider):try:value = dict(item)json_str = json.dumps(value,ensure_ascii=False)self.df.write(json_str)self.df.write(",\n")except Exception as e:print("存储失败",e)return itemdef close_spider(self,spider):self.df.seek(-2,os.SEEK_END)self.df.truncate()self.df.write("]")self.df.close()

9.创建start.py文件

from scrapy import cmdlinecmdline.execute("scrapy crawl douban_spider".split())

10.右击运行"Run Start"执行爬虫

步骤9,10可省略,直接进入该项目,运行scrapy crawl也可执行

爬取部分结果:

[{“title”: “泰坦尼克号 Titanic”, “daoyan”: “詹姆斯·卡梅隆”, “bianju”: “詹姆斯·卡梅隆”,
“zhuyan”: “莱昂纳多·迪卡普里奥 / 凯特·温丝莱特 / 比利·赞恩 / 凯西·贝茨 / 弗兰西丝·费舍 / 格劳瑞亚·斯图尔特
/ 比尔·帕克斯顿 / 伯纳德·希尔 / 大卫·沃纳 / 维克多·加博 / 乔纳森·海德 / 苏茜·爱米斯 / 刘易斯·阿伯内西 /
尼古拉斯·卡斯柯恩 / 阿那托利·萨加洛维奇 / 丹尼·努齐 / 杰森·贝瑞 / 伊万·斯图尔特 / 艾恩·格拉法德 / 乔纳森·菲利普斯
/ 马克·林赛·查普曼 / 理查德·格拉翰 / 保罗·布赖特威尔 / 艾瑞克·布里登 / 夏洛特·查顿 / 博纳德·福克斯 /
迈克尔·英塞恩 / 法妮·布雷特 / 马丁·贾维斯 / 罗莎琳·艾尔斯 / 罗切尔·罗斯 / 乔纳森·伊万斯-琼斯 / 西蒙·克雷恩 /
爱德华德·弗莱彻 / 斯科特·安德森 / 马丁·伊斯特 / 克雷格·凯利 / 格雷戈里·库克 / 利亚姆·图伊 / 詹姆斯·兰开斯特 /
艾尔莎·瑞雯 / 卢·帕尔特 / 泰瑞·佛瑞斯塔 / 凯文·德·拉·诺伊”, “type”: “剧情爱情灾难”, “time”:
“194分钟”}]

如果对您有帮助,麻烦点个赞。您的鼓励就是我的动力!
Python3.x使用Scrapy将爬取数据存储到MySQL

Python3.x使用Scrapy将爬取数据存储成Json相关推荐

  1. 爬虫项目实战一:基于Scrapy+MongDB爬取并存储糗事百科用户信息

    爬虫项目实战一:基于Scrapy+MongDB爬取并存储糗事百科用户信息 一.前言 二.项目目标 三.项目的环境配置 四.项目实现 1. 创建QSBK项目 2. 实现Spider 1. 实现一页网页上 ...

  2. python爬取json数据_Python爬取数据保存为Json格式的代码示例

    python爬取数据保存为Json格式 代码如下: #encoding:'utf-8' import urllib.request from bs4 import BeautifulSoup impo ...

  3. Scrapy框架爬取数据

    因为对爬虫有着很大的好奇心,所以又找了一些资料继续开始了学习之旅. 文章目录 一.Scrapy框架简介 二.爬取网络数据 2.1爬取单个网页数据 2.2爬取多个网页数据 三.一些小方法 四.小结 一. ...

  4. python爬虫库scrapy_使用Python爬虫Scrapy框架爬取数据

    时隔数月,国庆期间想做个假期旅游的分析展示. 1.通过Python爬取旅游网站上数据,并存储到数据库 2.通过Echart/FineReport/Superset等数据分析工具对数据展示 环境: Wi ...

  5. Python爬取数据存储到本地文本文件

    前面说过Python爬取的数据可以存储到文件.关系型数据库.非关系型数据库.前面两篇文章没看的,可快速戳这里查看!https://mp.weixin.qq.com/s/A-qry4r3ymuCLXLB ...

  6. python:使用selenium爬取51job(前程无忧)并将爬取数据存储到MySql数据库中的代码实例

    自己捣鼓了几天写的代码,基本上把51job的岗位相关的数据都爬下来了,可以视要求自行增减,代码虽然有些简陋,不过我爬取的时候没报什么错.代码适合初学者学习使用,废话不多说,代码如下: from sel ...

  7. Scrapy实例1-爬取天气预报存储到Json

    目标: 爬取天气网天气 目标链接: http://beijing.tianqi.com/ 我们依据上篇文章http://blog.csdn.net/co_zy/article/details/7718 ...

  8. python爬虫十二:初步使用Scrapy框架爬取数据

    1.通过pipelines操作拿到的数据 要点一:爬虫文件必须通过关键字yield生成器才能与pipelines建立链接才可以操作,当运行爬虫文件之后执行的顺序如下图简介,如果重写模块或者内部方法可能 ...

  9. java 爬取数据_JAVA爬取天天基金网数据

    爬取基金历史记录代码: 1.首先要自己定义几个参数:基金编码,页数,每页显示条数 开始时间结束时间等 (我这直接写的静态方法使用的 大家可以改成Test方法自行进行测试) /*** httClient ...

最新文章

  1. CSDN移动助手v0.01发布
  2. 重写与重载的区别 以及 重写中super的使用
  3. PMCAFF | 产品经理如何设计敏捷开发流程?
  4. MySQL数据库的性能优化总结
  5. LiveVideoStack音视频技术2018年度评奖揭晓
  6. Avalonia跨平台入门第九篇之控件置顶和置底
  7. ProgressBar--进度条
  8. getWriter() has already been called for this response
  9. 解决gbk转utf8乱码
  10. TIFF图像文件格式详解
  11. 学习电商的第一个业务,发票管理,发票作废(发票作废为重)
  12. POI 模板生成word PDF——牛X神器
  13. 总结了Linux系统中常用的命令
  14. MSP430之仿真器驱动安装问题
  15. stm32作为spi的从机使用例程
  16. Linux常用指令---系统负载
  17. 打印HttpServletRequest
  18. 用 Fiddler 来抓取手机包
  19. centos7.6安装Funwave-TVD 3.3全过程
  20. 在Win7如何使用 快速启动栏

热门文章

  1. Oracle中的双引号与单引号
  2. c# richtextbox转html,WPF操作RichTextBox(转)
  3. YTU 2573: 连续奇数和
  4. 让机器读懂用户--大数据中的用户画像
  5. SQL中 exec sp_executesql 执行 where in 参数方法
  6. 易语言mysql复制表语句_易语言SQL数据库查询语句
  7. 基于C++开发的仓库管理系统(附源码)
  8. java 员工类算工资_java 编程 计算工人工资,
  9. Kademlia协议原理简介V1.1
  10. Windows虚拟内存不足的几种解决方法(转)