scrapy 爬取当当图书名字图片
1。创建项目和创建爬虫参考上一篇博客。
2.dang.py
import scrapy
from scrapy_dangdang.items import ScrapyDangdangItemclass DangSpider(scrapy.Spider):name = 'dang'# 多页下载要注意 allowed_domains 范围,一般只写域名allowed_domains = ['category.dangdang.com']start_urls = ['http://category.dangdang.com/cp01.01.02.00.00.00.html']base_url = 'http://category.dangdang.com/pg' page = 1def parse(self, response):li_list = response.xpath('//ul[@id="component_59"]/li') # xpath 选择要爬取的内容路径for li in li_list:src = li.xpath('.//img/@data-original').extract_first() # 懒加载反爬 第一张图片和其他图片的标签属性是不一样的,第一张图片是可以使用 src 的,其他图片的地址是 data-originalif src:src = srcelse:src = li.xpath('.//img/@src').extract_first()name = li.xpath('.//img/@alt').extract_first()price = li.xpath('.//p[@class="price"]/span[1]/text()').extract_first()book = ScrapyDangdangItem(src=src,name=name,price=price)yield book # 获取一个 book 就将 book 交给 pipelines ,yield 类似 return# 每一页的爬取逻辑是一样的。只需要将执行页的请求再次调用 parse 方法if self.page < 100:self.page = self.page + 1url = self.base_url +str(self.page) + '-cp01.01.02.00.00.00.html' # 每页的url链接拼接# callback 要执行的函数yield scrapy.Request(url=url,callback=self.parse)
3. items 定义数据结构
items.py
import scrapy
class ScrapyDangdangItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()src = scrapy.Field() # 图片name = scrapy.Field() # 名字price = scrapy.Field() # 价格
4.管道 pipelines 下载数据
pipelines.py
import urllib.request
from itemadapter import ItemAdapter# 如果想使用管道 ,必须在 settings 开启管道
class ScrapyDangdangPipeline:# 在爬虫文件开始之前执行def open_spider(self,spider):self.fp = open('book.json','a',encoding='utf-8')# item 就是yield 后面的 book 对象def process_item(self, item, spider):# write 方法必须是一个字符串# 对文件打开关闭操作过于频繁,不推荐这样做# with open('book.json','a',encoding='utf-8') as fp:# fp.write(str(item))self.fp.write(str(item) + ',')return item# 在爬虫文件执行完之后 执行def cloxe_spider(self,spider):self.fp.close()# 再开一条管道下载
# 1)定义管道类,并在 settings 中增加 'scrapy_dangdang.pipelines.DangDangDownloadPipeline': 301,
class DangDangDownloadPipeline: # 定义管道类def process_item(self,item,spider):url = 'http:' + item.get('src') # 图片地址拼接filename = r'C:\Users\Administrator\Desktop\books' + './' + item.get('name') + '.jpg'urllib.request.urlretrieve(url=url,filename=filename) # 下载图片return item
5.爬取下载的部分数据保存在 json
6.保存的图片
scrapy 爬取当当图书名字图片相关推荐
- Python数据爬虫学习笔记(21)Scrapy爬取当当图书数据并存储至SQLite数据库
一.需求:在当当网的程序设计类图书商品界面中,爬取图书的名称.详情链接以及评论数,并将信息存储至SQLite数据库. 二.URL及网页源码分析: 1.URL分析,注意到商品搜索页的URL具有以下结构: ...
- Scrapy爬取当当网图书销售前100
scrapy爬取当当网图书畅销榜 一.采集任务 爬取当当网图书畅销榜信息,获取热销图书前500相关数据. 二.网页解析 1. 打开当当网,按照图书榜>图书畅销榜 进入当当网图书畅销榜[http: ...
- python实战|用scrapy爬取当当网数据
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:Python进击者 ( 想要学习Python?Pyth ...
- 爬取当当图书排行榜(榜单自选),格式:爬取结果包含但不限于[排名 书名 作者],注意输出格式对齐
目录 爬取当当图书排行榜 查看当当图书排行榜,分析其网址各部分代表的意义,选取特定分类和时间区间进行爬取 解析网页内容,查看所需信息(排名,书名,作者,出版社,价格)的位置: 筛选所需数据,输出并保存 ...
- Scrapy爬取当当网的商品信息存到MySQL数据库
Scrapy爬取当当网的商品信息存到MySQL数据库 Scrapy 是一款十分强大的爬虫框架,能够快速简单地爬取网页,存到你想要的位置.经过两天的摸索,终于搞定了一个小任务,将当当网的商品信息爬下来存 ...
- Scrapy爬取动态页面下载图片(以抓取360图片为例)
当我们想要抓取一个页面的内容时,要做的第一件事不是写代码,而是分析页面,确定这是一个静态页面还是动态页面.抓取静态页面的方法十分简单,直接解析html源码再进行分析解析即可,如果不太明白,可以参考我上 ...
- Scrapy爬取豆瓣图书详情存入CSV并导入MySQL
目录 前言 一.新建爬虫工程 二.修改settings.py文件 三.编写items.py 四.编写pipelines.py 五.编写book.py 六.存储到MySQL 七.爬取结果 八.后言 前言 ...
- scrapy mysql 豆瓣_利用Scrapy爬取豆瓣图书并保存至Mysql数据库
Scrapy是一个纯Python语言写的爬虫框架,本次用它来爬取豆瓣图书的数据. 准备工作 没有安装Scrapy的同学需要安装一下,有两种方式安装: 安装了Anaconda的同学直接在命令行输入con ...
- scrapy爬取当当网Python图书的部分数据
1.下载scrapy框架 pip install scrapy 2.在E盘下创建一个文件夹scrapy01,在命令行窗体中进入该文件夹 3.创建项目:scrapy startproject 项目名 s ...
最新文章
- mysql将字符转换成数字
- 3306 端口 要不要修改_zabbix 自动发现并监控所有端口
- 华为S5500T 存储巡检
- 花之吻自己查错误订单的一个小脚本
- 【科普】什么是 “内卷化效应” ?
- FZU - 2218 Simple String Problem(状压dp)
- 联想扬天T4900v开启VT-x方法
- 减治法在求解拓扑排序问题中的应用(JAVA)--有向无环图
- clickhouse 物化视图_再谈clickHouse:微博基于 ClickHouse 监控百亿流量下的指标
- Linux中断技术、门描述符、IDT(中断描述符表)、异常控制技术总结归类
- php pdf压缩工具,在线压缩PDF文件的工具
- webstorm小程序插件和中文插件
- 海康威视网络摄像头开发流程(七)-------- 激活海康威视网络摄像头
- 华为 emui 刷机解锁及回锁教程
- C语言 实验六 函数
- Glide库里,藏了一套你心心念念的GIF压缩工具集
- 欧姆龙CP1H+CIF11与3台施耐德ATV 71变频器通讯实战程序
- IT人跨界:开了咖啡店却从没想过赚钱
- csgo星空天空代码_csgo天空背景怎么改_csgo天空背景更改方法
- java pdf转jpg清晰度_java 库 pdfbox 将 pdf 文件转换成高清图片方法
热门文章
- 图像超分辨率重建数据集看这篇就够了——训练 + 测试 | 【云盘分享】
- Spring Cloud教程(十一)环境变化和刷新范围
- MDL---Material Design Lite框架推荐
- 【springmvc】九大组件之HandlerExceptionResolver
- 【苹果群发iMessage推送位置推】软件安装将会按照 Developer Program【WebSocket】创建WebSocket毗连
- python伪造邮件发件地址_python-SMTPSenderRefused-553,发件人地址未经验证-Django电子邮件表格...
- 国内云计算的下半场机遇在哪里?
- 微营销实战demo coffee
- 微信公众号开发——关注公众号自动回复
- 基于DL的计算机视觉(5)--理解反向传播