首页 » 友链在线 » 基于python的scrapy爬虫,关于增量爬取是怎么处理的「python返回数据给前端」

基于python的scrapy爬虫,关于增量爬取是怎么处理的「python返回数据给前端」

访客 2024-11-19 0

扫一扫用手机浏览

文章目录 [+]

基于python的scrapy爬虫,关于增量爬取是怎么处理的

对于只是读取某几个网站更新内容的爬虫完全没必要在python代码中实现增量的功能,直接在item中增加Url字段。

item['Url'] = response.url

基于python的scrapy爬虫,关于增量爬取是怎么处理的「python返回数据给前端」 基于python的scrapy爬虫,关于增量爬取是怎么处理的「python返回数据给前端」 友链在线

然后在数据端把储存url的column设置成unique。

基于python的scrapy爬虫,关于增量爬取是怎么处理的「python返回数据给前端」 基于python的scrapy爬虫,关于增量爬取是怎么处理的「python返回数据给前端」 友链在线
(图片来自网络侵删)

之后在python代码中捕获数据库commit时返回的异常,忽略掉或者转入log中都可以。

我使用的是SqlAlchemy。我是这么写的

from sqlalchemy.exc import IntegrityError

class XxxPipeline(object):

def process_item(self, item, spider):

#一些session.add()

#........

try:

session.commit()

print 'crawl %s done!' % item['Url']

except IntegrityError:

print 'skip %s .' % item['Url']

return item

虽然每次crawl都会重复抓取一些数据,但最终结果库内不会有相同的Url。

对于小规模的爬虫,这种重复抓取的成本基本可以忽略。

如何使用Python获取当前页面的请求接口的返回信息

一般情况下接口的返回信息最终会渲染到页面上,如果对于性能没太大要求,可以使用浏览器模拟的方式获取页面渲染后的数据,如果对于性能有要求,可以通过浏览器的开发者工具拿到接口请求地址参数和返回结果。第一种方式可以使用selenium,第二种方式可以使用postman或者wireshark进行模拟请求和测试


这个非常简单,requests模块就可以轻松实现,下面我简单介绍一下:

requests简介

requests模块是Python一个非常实用的HTTP库,可以很方便的进行get、post、put、delete等常见web接口测试,对于返回的数据可以直接json序列化,处理起来非常快捷,中文官网地址https://2.python-requests.org//zh_CN/latest/index.html,介绍的非常详细:

接口测试

1.首先,安装requests模块,这个直接在cmd窗口输入安装命令“pip install requests”就行,如下,很快就能安装成功:

2.安装完成后,我们就可以直接进行web接口测试了,这里主要进行了get、post、put、delete4中常见类型的请求,主要代码及截图如下:

  • get请求:这里可以直接将参数作为url的一部分进行传递(单独封装也行),测试代码如下,非常简单,get发送request请求,然后获取response响应,解析并打印响应信息,包括status_code、headers、cookies、text等:

程序运行截图如下,已经成功获取到接口返回的数据:

  • post请求:这里的参数不能直接传递给url地址,需要作为data随同post请求一起提交,测试代码如下,将需要提交的参数赋值给data就行:

程序运行截图如下,已经成功获取到接口返回信息:

  • put请求:这个和post请求差不多,也需要先封装参数,然后随同put请求一起提交,测试代码如下,非常简单:

程序运行截图如下,成功获取接口返回信息:

  • delete请求:这个也非常简单,测试代码如下,直接发送请求就行:

程序运行截图如下,也已成功获取接口返回信息:

至此,我们就完成了requests模块的安装和简单使用。总的来说,这个模块使用起来非常方便,可以很便捷的进行web接口测试,在爬虫中也经常会用到,网上也有相关教程和资料,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。

基于python的scrapy爬虫,关于增量爬取是怎么处理的

对于只是读取某几个网站更新内容的爬虫完全没必要在python代码中实现增量的功能,直接在item中增加Url字段。

item['Url'] = response.url

然后在数据端把储存url的column设置成unique。

之后在python代码中捕获数据库commit时返回的异常,忽略掉或者转入log中都可以。

我使用的是SqlAlchemy。我是这么写的

from sqlalchemy.exc import IntegrityError

class XxxPipeline(object):

def process_item(self, item, spider):

#一些session.add()

#........

try:

session.commit()

print 'crawl %s done!' % item['Url']

except IntegrityError:

print 'skip %s .' % item['Url']

return item

虽然每次crawl都会重复抓取一些数据,但最终结果库内不会有相同的Url。

对于小规模的爬虫,这种重复抓取的成本基本可以忽略。

标签:

相关文章

隐身登陆,网络安全的新挑战与应对步骤

在数字化时代,网络安全问题日益凸显。随着互联网技术的飞速发展,各种网络攻击手段层出不穷,其中隐身登陆作为一种新型攻击方式,给网络安...

友链在线 2025-01-16 阅读0 评论0

隔行复制,高效便捷的办公技能介绍与应用

在信息化时代,办公效率成为衡量一个人工作能力的重要标准。而在日常工作中,我们常常需要将文档中的某些行进行复制,以便于后续编辑或整理...

友链在线 2025-01-16 阅读0 评论0

隔音降噪,打造宁静生活空间

随着城市化进程的加快,噪音污染问题日益严重,给人们的生活带来了诸多困扰。为了打造一个宁静舒适的生活环境,了解如何进行隔音降噪变得尤...

友链在线 2025-01-16 阅读0 评论0

雅拼音的魅力,传承与创新

随着科技的飞速发展,语言文字的传播方式也在不断变革。在众多拼音方案中,雅拼音以其独特魅力脱颖而出,成为现代汉语拼音的重要代表。本文...

友链在线 2025-01-16 阅读0 评论0