Python 爬虫之Scrapy《下》
liuian 2024-12-07 14:59 38 浏览
今天这篇文章主要是分享两个技术点。
第一:翻页数据如何处理;
第二:构建一个db pipeline来获取数据并入库。
第一部分:翻页处理
在前面的文章中已经能够正常地提取我们想要的页面数据了,但是这只是一个页面想要的数据,如果是有很多页面的数据要处理,我们如何来爬取了。
page=1
start_urls=[] #这个是scrapy框架中定义好的,不可以修改
while (page < 7): #根据自身爬取的页面来定义
print("the page is:", page)
url = 'http://lab.scrapyd.cn/page/' + str(page) #对翻页的链接进行拼接
start_urls.append(url) #追加到上面定义好的列表中去
page += 1 #好让循环可以退出
def parse(self, response):
items=LabItem()
for sel in response.xpath('//div[@class="col-mb-12 col-8"]'):
print(sel)
for i in range(len(sel.xpath('//div[@class="quote post"]//span[@class="text"]/text()'))):
title = sel.xpath('//div[@class="quote post"]//span[@class="text"]/text()')[i].get()
author = sel.xpath('//div[@class="quote post"]//small[@class="author"]/text()')[i].get()
items["title"]=title
items["author"] = author
yield items源码中会不断的遍历start_urls这个列表里面的链接地址,并向这个列表里面的链接地址发出request请求,拿到response后再来解析页面数据,源码如下图所示:
第二部分:db pipeline 数据处理
Step1: 创建数据库与表,如下图所示
Step2: 创建sqlitePipeline类并配置setting.py文件
sqlitePipeline类代码如下:
class sqlitePipeline(object):
def __init__(self):
print("当爬虫执行开始的时候回调:open_spider")
self.conn = sqlite3.connect("test.db")
self.cur = self.conn.cursor()
self.table='''
create TABLE IF NOT EXISTS scrapy0725(
id INTEGER PRIMARY KEY AUTOINCREMENT,
`author` varchar(255) DEFAULT NULL,
`title` varchar(2000) DEFAULT NULL
);
'''
self.cur.execute(self.table)
def process_item(self, item, spider):
print("开始处理每一条提取出来的数据==============")
# content = json.dumps(dict(item),ensure_ascii=False)+"\n"
content = dict(item)
print("*" * 100)
insert_sql="INSERT INTO scrapy0725 (author,title) VALUES ('"+str(content['author']).replace("'","")+"','"+str(content['title']).replace("'","")+"')"
print(insert_sql)
print("*"*100)
self.cur.execute(insert_sql)
self.conn.commit()
print("*"*100)
return item
def close_spider(self, spider):
sql = "select * from scrapy0725"
result=self.cur.execute(sql)
for res in result:
print(res)
self.cur.close()
self.conn.close()
print("当爬虫执行结束的时候回调:close_spider")
setting.py 配置如下:
ITEM_PIPELINES = {
'lab.pipelines.sqlitePipeline':500,
# 'lab.pipelines.FilePipeline': 300,
}
Step3: 执行此命令 scrapy crawl labs
Step4: 查询数据库是否insert成功,如下图所示:
总结:
Python + Scrapy爬虫的文章暂时就分享到这里,Scrapy的爬虫效率还是不错的,大家动手开始实践吧。
相关推荐
- 注册qq号免费立即申请不用手机号
-
1、先在网页上搜索安装谷歌浏览器2、安装完成后,不要在电脑上登录任何一个QQ,打开QQ登录的界面,点击注册账号。3、在注册账号的页面,填上相应要求的信息,手机号码的部分先不要填。4、点击谷歌浏览器右上...
- office2016破解版安装教程(office2016下载破解版)
-
microsoftoffice2016激活与破解的区别是版本不同。①尽量使用官方的原版程序、原版软件,避免使用来路不明的"XX"版。②若程序对非正版授权用户有功能或使用期限制,但仍能满...
- tenda登录密码(tenda登录入口密码)
-
腾达路由器登录的密码和用户名为ADMIN。老版的兴化的都使用的是这一个用户名和密码新出的版本,登录的地址和用户名密码都在路由器背面,标签上的是随机产生的,没有规律,只需查看按照地址输入用户名和密码,就...
- android系统更新(android系统更新opengl版本)
-
1.1、打开手机页面,点击进入oppo的官网;2、进入页面后,点击下载系统包的按钮,系统自动升级。2.1、持手机卡去oppo手机专卖店;2、刷卡在专卖店里直接升级。3.1、打开电脑,开机进入页面;2、...
- tplink路由器登录名和密码(tp link无线路由器用户名和密码)
-
1、tp-link无线路由器,上网账号就是宽带账号,口令就是宽带密码,设置方法如下:一、接线方法,外网进线接入路由器wan口,路由器lan口接线到电脑网线接口。二、路由器设置,打开浏览器http://...
- win10硬盘格式mbr还是guid(won10硬盘格式)
-
作为人类的我回答你的问题。在选择WIN10分区类型时,我建议使用GUID分区表(GPT)。原因如下:1.GPT支持更大容量的硬盘,可以处理大型数据存储需求,而MBR分区表限制了最大可用空间为2TB。...
-
- 台式电脑网线怎么插(台式电脑网线插在猫上还是路由器上)
-
1、如果你家里没有用路由器,那么电脑主机上的网线,需要插在猫的网口/LAN口。温馨提示:没有用路由器的情况下,电脑要上网的话,你需要打开电脑中的“宽带连接”程序,然后填写你家的宽带账号、宽带密码,就能连接上网了。如果你不知道如何用“宽带连...
-
2025-11-08 03:05 liuian
- 电脑开机进入不了系统怎么办
-
电脑开机正常但无法进入系统,一般是系统故障或硬件故障。硬件故障:通常是电压不稳定导致,安装稳压器能解决。或者是主机机箱内灰尘过多,导致容易产生静电,清理机箱灰尘,重新拔插内存条可解决。把电脑关机之后重...
- 电脑不能正常关机(电脑强制关机后无法正常启动)
-
1解决电脑无法关机的方法2电脑无法关机可能是由于软件冲突、系统故障或者硬件问题等原因造成的。可以尝试以下几种解决方法:a)强制关机:按住电脑主机上的电源按钮直到电脑完全关闭,但这种方法可能会...
- qq对战平台下载官网(qq对战平台安卓版)
-
1.在左边游戏分类上选择你想要玩的游戏,双击游戏名称(cs,魔兽,星际);2.右边房间列表出现不同游戏版本的房间,请对应你安装的游戏的版本选择房间,双击进入;3.点击“设置”按钮,弹出QQ对战平台...
- 分区助手专业版下载(分区助手6.0中文版)
-
区别主要有以下几点:1.功能差异:傲梅分区助手绿色版相对于专业版功能较少,仅提供基本的分区操作,如创建、删除、合并、移动、调整分区大小等,而专业版则提供更多的高级功能,如转换磁盘类型、拷贝分区、修复...
- 驱动程序在哪里找(驱动程序在哪里找出来)
-
驱动程序在电脑中可以这样查找:1.打开设备管理器:在Windows系统中,你可以通过“控制面板”>“设备管理器”来打开设备管理器。2.查找驱动程序:在设备管理器中,你可以看到你的电脑中安装的...
- 用光盘怎么重装系统(用光盘怎么重装系统win7)
-
惠普笔记本有系统光盘重装系统的具体步骤如下:1、当我们用光盘来进行系统重装的时候,我们需要准备好微软系统的系统盘。2、首先我们打开电脑机箱上的光驱,直接放入光碟,此时电脑会自动重启进入读取系统光盘操作...
- 质量管理体系有哪些(永辉质量管理体系有哪些)
-
常见4种。见下: 质量管理体系常用的包括ISO9000质量管理体系、精益生产管理体系、六西格玛质量管理体系、资质体系等。ISO9000...
- 联想电脑如何截屏截图(联想电脑上怎样截图)
-
用lenovo电脑如果想截屏,我们可以采用了以下几个方法。一个方法就是用笔记本电脑截屏的快捷键来进行截屏。我们在浏览网页的时候,如果想把网页截屏下来,可以用笔记本电脑的Prtsc键。这个键就是截屏的...
- 一周热门
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)
