Python数据爬虫学习笔记(21)Scrapy爬取当当图书数据并存储至SQLite数据库
一、需求:在当当网的程序设计类图书商品界面中,爬取图书的名称、详情链接以及评论数,并将信息存储至SQLite数据库。
二、URL及网页源码分析:
1、URL分析,注意到商品搜索页的URL具有以下结构:
2、源码分析,观察网页的源代码,寻找商品名称、商品链接、评论数信息的所在位置。
1)商品名称:存在于class属性为pic的a标签中的title属性中。
2)商品链接:与商品名称类似,存在于存在于class属性为pic的a标签中的href属性中。
3)评论数信息:被name属性为itemlist-review的a标签所包围。
三、编写代码:
1、items.py:
import scrapyclass DangdangItem(scrapy.Item):#爬取内容为图书名称、图书链接、图书评论数title=scrapy.Field()link=scrapy.Field()comment=scrapy.Field()
2、settings.py:
# 必须解除遵守robots协议
ROBOTSTXT_OBEY = False
#启用pipelines.py来进行数据处理
ITEM_PIPELINES = {'dangdang.pipelines.DangdangPipeline': 300,
}
3、dd.py(笔者创建的爬虫文件):
import scrapy
from dangdang.items import DangdangItem
from scrapy.http import Requestclass DdSpider(scrapy.Spider):name = 'dd'allowed_domains = ['dangdang.com']#设置起始URL为商品第一页start_urls = ['http://category.dangdang.com/pg1-cp01.54.06.00.00.00.html']def parse(self, response):item=DangdangItem()#设定爬取的XPath表达式item["title"]=response.xpath("//a[@class='pic']/@title").extract()item["link"] = response.xpath("//a[@class='pic']/@href").extract()item["comment"] = response.xpath("//a[@name='itemlist-review']/text()").extract()yield item#设置爬取前10页for i in range(2,11):#构造商品URLurl="http://category.dangdang.com/pg"+str(i)+"-cp01.54.06.00.00.00.html"yield Request(url,callback=self.parse)
4、pipelines.py:
import sqlite3class DangdangPipeline(object):def process_item(self, item, spider):#连接数据库并创建游标,本文中的dangdang.db为笔者自行创建的数据库文件,结构见本代码后的图片conn = sqlite3.connect('E:/dangdang.db')cursor=conn.cursor()for i in range(0,len(item["title"])):title=item["title"][i]link=item["link"][i]comment=item["comment"][i]#构造SQL语句并通过游标执行sql = "insert into books values('"+title+"','"+link+"','"+comment+"')"cursor.execute(sql)#注意必须要提交事件才能够使数据库修改操作生效conn.commit()#输出爬取的内容print(title)print(link)print(comment)#关闭游标以及数据库连接cursor.close()conn.close()return item
本文创建的SQLite数据库结构:
四、运行结果:
1、PowerShell(CMD)中:
2、SQLite数据库中(笔者使用SQLiteStudio进行数据库管理):
Python数据爬虫学习笔记(21)Scrapy爬取当当图书数据并存储至SQLite数据库相关推荐
- Scrapy爬取当当网的商品信息存到MySQL数据库
Scrapy爬取当当网的商品信息存到MySQL数据库 Scrapy 是一款十分强大的爬虫框架,能够快速简单地爬取网页,存到你想要的位置.经过两天的摸索,终于搞定了一个小任务,将当当网的商品信息爬下来存 ...
- python实战|用scrapy爬取当当网数据
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:Python进击者 ( 想要学习Python?Pyth ...
- Python网络爬虫3 - 生产者消费者模型爬取某金融网站数据
博客首发于www.litreily.top 应一位金融圈的朋友所托,帮忙写个爬虫,帮他爬取中国期货行业协议网站中所有金融机构的从业人员信息.网站数据的获取本身比较简单,但是为了学习一些新的爬虫方法和技 ...
- python爬虫学习笔记分析Ajax爬取果壳网文章
有时在使用requests抓取页面会遇到得到的结果与在浏览器 中看到的结果不一样,在浏览器检查元素中可以看到的正常的显示的网页数据,但是requests请求得到的结果却没有.这是因为requests请 ...
- scrapy 爬取当当图书名字图片
1.创建项目和创建爬虫参考上一篇博客. 2.dang.py import scrapy from scrapy_dangdang.items import ScrapyDangdangItemclas ...
- python爬虫学习日记(1) scrapy爬取时,报错Filtered offsite request
使用scrapy框架抓取某妹子图网时,只能抓取第一页,第二页报错 [scrapy.spidermiddlewares.offsite] DEBUG: Filtered offsite request ...
- python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
这篇文章主要介绍了python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析的实例,帮助大家更好的理解和学习使用python.感兴趣的朋友可以了解下 一.环境准备 python3.8.3 ...
- 从入门到入土:Python爬虫学习|实例练手|爬取猫眼榜单|Xpath定位标签爬取|代码
此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...
- 从入门到入土:Python爬虫学习|实例练手|爬取百度翻译|Selenium出击|绕过反爬机制|
此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...
最新文章
- 剪绳子python_Python剪绳子如何实现 Python剪绳子实现代码
- Flutter:使用复选框进行下拉多选
- mysql设置参数0和1_MySQL 8.0 首个自适应参数横空出世
- aws创建html网页,AWS: 在AWS上创建一个网站,综合运用(Lambda + Api Gateway + Dynamodb + S3)...
- oracle查询pga大小GB,Oracle如何调整SGA和PGA的大小
- 搭建Telnet服务器
- java同样作用的方法_Java的接口用途和方法
- Steroids上的SQL Server Express Edition
- Java中Object转Map类型,Map转Object类型
- Linux时间不准确的问题![转]
- vue-axios配置token,上传图片
- 腐蚀单机服务器怎么不稳定,腐蚀有什么指令?基本指令及服务器指令汇总
- js-事件处理(重点)
- qq远程卡主,只能看到桌面,鼠标、键盘操作不了的解决方法
- 微信java sdk 多公众号_Java版微信公众号支付开发全过程
- ISO8601时间格式转换为Date
- 孤独最高境界:这款单人VR游戏竟能带来多人组队体验
- Android打开pdf文件
- svn提示Node remains in conflict的解决办法
- 原生js 给动态添加的元素添加(事件监听器)