我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python爬虫数据操作的技巧有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python爬虫数据操作的技巧有哪些

这篇文章主要讲解了“Python爬虫数据操作的技巧有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python爬虫数据操作的技巧有哪些”吧!

 需求

爬取某网站的项目列表页,获取其url,标题等信息,作为后续爬取详情页的任务url。

代码

# -*- coding: utf-8 -*- # @Time : 2019-11-08 14:04 # @Author : cxa # @File : motor_helper.py # @Software: PyCharm  import asyncio  import datetime from loguru import logger from motor.motor_asyncio import AsyncIOMotorClient from collections import Iterable  try:     import uvloop      asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) except ImportError:     pass  db_configs = {     'host': '127.0.0.1',     'port': '27017',     'db_name': 'mafengwo',     'user': '' }  class MotorOperation:     def __init__(self):         self.__dict__.update(**db_configs)         if self.user:             self.motor_uri = f"mongodb://{self.user}:{self.passwd}@{self.host}:{self.port}/{self.db_name}?authSource={self.db_name}"         else:             self.motor_uri = f"mongodb://{self.host}:{self.port}/{self.db_name}"         self.client = AsyncIOMotorClient(self.motor_uri)         self.mb = self.client[self.db_name]     async def save_data_with_status(self, items, col="seed_data"):         for item in items:             data = dict()             data["update_time"] = datetime.datetime.now()             data["status"] = 0  # 0初始             data.update(item)             print("data", data)             await self.mb[col].update_one({                 "url": item.get("url")},                 {'$set': data, '$setOnInsert': {'create_time': datetime.datetime.now()}},                 upsert=True)       async def add_index(self, col="seed_data"):         # 添加索引         await self.mb[col].create_index('url')

因为我的爬虫是异步网络模块aiohttp写的,所以选择了pymongo的异步版本motor进行操作。

异步代码的基本属性就是async/await成对的出现,如果把上面的await和async去掉,就是类似pymongo的写法了,这里异步不是重点,重点是我们怎么处理每条数据。

这里除了网页的url,标题等信息,我需要附加3个字段。分别是create_time, status,update_time。

这三个字段分别代表,数据插入数据,状态和更新时间。

那么我为什么添加三个字段呢?

首先,我们需要判断每次的任务数据是否存在,我这里的情况是存在就更新不存在就插入,那么我就需要一个查询条件,作为更新的条件,很显然这里可以使用任务的url作为唯一条件(你还可以使用url+标题做个md5然后保存),好了查询条件确定。

下面说create_time这个比较好理解就是数据插入时间,关键是为什么还要一个update_time,这个的话和status字段有一定的关系。画重点:这个status作为后续爬虫进行爬取的一个标志用。目前这个status有4个值,0-4,我这是这样定义的,

0:初始状态

抓取中的任务

抓取成功

抓取失败

抓取成功但是没有匹配到任务。

后面随着任务的爬取,状态也是不断变化的,同时我们需要更新update_time为最新的时间。这个目前的话是体现不出来什么作用,它的使用场景是,重复任务的抓取,比如今天我抓取了任务列表里的url1、url2,第二天的时候我如果再抓到,为了区分是抓取失败还是抓取成功,我们根据create_time和update_time就可以进行推断了,如果两者相同而且是当前的日期说明刚抓的,如果update_time的日期比create_time新可以说明,抓到了重复的任务。关于字段的设计就啰嗦这么些。

下面是实现,我们可以通过update_one方法,对数据作存在或者插入操作,因为url作为查询条件,后面量大的话就最好添加一个索引。也就是上面的  add_index方法。

好了最好说插入更新的具体代码

需要注意的是

{'$set': data, '$setOnInsert': {'create_time': datetime.datetime.now()}}

$setOnInsert里面使用的字段是数据不存在的时候才插入的,存在就不动了,只插入$set里面指定的。

另外$setOnInsert里面使用的字段不能在$set里面再次出现

upsert=True代表的是不存在就插入。

感谢各位的阅读,以上就是“Python爬虫数据操作的技巧有哪些”的内容了,经过本文的学习后,相信大家对Python爬虫数据操作的技巧有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python爬虫数据操作的技巧有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python爬虫数据操作的技巧有哪些

这篇文章主要讲解了“Python爬虫数据操作的技巧有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python爬虫数据操作的技巧有哪些”吧! 需求爬取某网站的项目列表页,获取其url,标
2023-06-16

有哪些Python爬虫技巧

这篇文章主要介绍“有哪些Python爬虫技巧”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“有哪些Python爬虫技巧”文章能帮助大家解决问题。1、基本抓取网页get方法import urllib2u
2023-07-06

Python爬虫的技巧有哪些

这篇文章主要介绍“Python爬虫的技巧有哪些”,在日常操作中,相信很多人在Python爬虫的技巧有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python爬虫的技巧有哪些”的疑惑有所帮助!接下来,请跟
2023-06-16

常用的python爬虫技巧有哪些

常用的Python爬虫技巧有以下几个:1. 使用requests库发送HTTP请求:使用requests库可以方便地发送HTTP请求,并获取响应结果。2. 使用BeautifulSoup解析HTML:BeautifulSoup是一个强大的H
2023-08-23

python爬虫伪装技巧有哪些

本篇内容介绍了“python爬虫伪装技巧有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.浏览器伪装因为网站服务器能够很轻易的识别出访
2023-06-17

有哪些常用的Python爬虫技巧

本篇内容介绍了“有哪些常用的Python爬虫技巧”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、基本抓取网页get方法import url
2023-06-16

JavaScript数组操作技巧有哪些

这篇“JavaScript数组操作技巧有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JavaScript数组操作技巧有
2023-06-27

操作Dreamweaver的技巧有哪些

这篇文章主要为大家展示了“操作Dreamweaver的技巧有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“操作Dreamweaver的技巧有哪些”这篇文章吧。  1、熟悉网页设计的网友就知道
2023-06-08

Python中的字符串操作技巧有哪些?

Python中的字符串操作技巧有哪些?字符串操作是Python编程中非常常见和重要的一部分。Python提供了许多内置函数和方法来进行字符串操作,让我们能够高效地处理和处理文本数据。下面我将介绍一些常用的字符串操作技巧,并给出具体的代码示例
2023-10-22

一些常用的Python爬虫技巧汇总

Python爬虫:一些常用的爬虫技巧总结爬虫在开发过程中也有很多复用的过程,这里总结一下,以后也能省些事情。1、基本抓取网页 get方法import urllib2 url "http://www.baidu.com" respons =
2022-06-04

jQuery操作radio的技巧有哪些

以下是一些使用jQuery操作radio的技巧:1. 设置选中的radio按钮:使用`prop()`方法将radio按钮的`checked`属性设置为`true`。```javascript$('input[name="radioName"
2023-08-15

跟踪数据的Python技巧有哪些

这篇文章主要介绍“跟踪数据的Python技巧有哪些”,在日常操作中,相信很多人在跟踪数据的Python技巧有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”跟踪数据的Python技巧有哪些”的疑惑有所帮助!
2023-06-16

JavaScript数组常见操作技巧有哪些

这篇文章主要介绍“JavaScript数组常见操作技巧有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript数组常见操作技巧有哪些”文章能帮助大家解决问题。一、创建数组创建数组是基
2023-06-29

用python爬虫抓站的一些技巧总结

在使用Python进行网站爬取时,有一些技巧可以帮助您更有效地抓取站点数据。下面是一些总结:1. 使用合适的爬虫框架:Python中有很多优秀的爬虫框架,如Scrapy、Beautiful Soup等。选择合适的框架可以大大简化爬取过程。2
2023-08-23

有哪些Python数据分析技巧

这篇文章主要介绍“有哪些Python数据分析技巧”,在日常操作中,相信很多人在有哪些Python数据分析技巧问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”有哪些Python数据分析技巧”的疑惑有所帮助!接下来
2023-06-16

Windows下操作POP3的技巧有哪些

在Windows下操作POP3的技巧包括:使用邮件客户端:Windows上有很多流行的邮件客户端,如Microsoft Outlook、Mozilla Thunderbird、Windows Mail等,这些客户端都提供了直观且易于使用的界
Windows下操作POP3的技巧有哪些
2024-02-29

python中Scrapy爬虫框架的作用有哪些

本文章向大家介绍python中Scrapy爬虫框架的作用有哪些,主要包括python中Scrapy爬虫框架的作用有哪些的使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。python可以做什么Py
2023-06-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录