iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python爬虫数据操作的技巧有哪些
  • 444
分享到

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

2023-06-16 17:06:50 444人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要讲解了“python爬虫数据操作的技巧有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“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爬虫数据操作的技巧有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Python爬虫数据操作的技巧有哪些

本文链接: https://www.lsjlt.com/news/284527.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Python爬虫数据操作的技巧有哪些
    这篇文章主要讲解了“Python爬虫数据操作的技巧有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python爬虫数据操作的技巧有哪些”吧! 需求爬取某网站的项目列表页,获取其...
    99+
    2023-06-16
  • 有哪些Python爬虫技巧
    这篇文章主要介绍“有哪些Python爬虫技巧”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“有哪些Python爬虫技巧”文章能帮助大家解决问题。1、基本抓取网页get方法import url...
    99+
    2023-07-06
  • Python爬虫的技巧有哪些
    这篇文章主要介绍“Python爬虫的技巧有哪些”,在日常操作中,相信很多人在Python爬虫的技巧有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python爬虫的技巧有哪些”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-16
  • python爬虫伪装技巧有哪些
    本篇内容介绍了“python爬虫伪装技巧有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.浏览器伪装因为网站服务器能够很轻易的识别出访...
    99+
    2023-06-17
  • 常用的python爬虫技巧有哪些
    常用的Python爬虫技巧有以下几个:1. 使用requests库发送HTTP请求:使用requests库可以方便地发送HTTP请求...
    99+
    2023-08-23
    python
  • 有哪些常用的Python爬虫技巧
    本篇内容介绍了“有哪些常用的Python爬虫技巧”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、基本抓取网页get方法import&nbs...
    99+
    2023-06-16
  • Python数组操作有哪些高级技巧?
    Python是一种功能强大的编程语言,广泛应用于数据科学和机器学习领域。在Python中,数组是一种常见的数据结构,它可以存储多个元素,并且可以进行各种操作。本文将介绍Python数组操作中的一些高级技巧。 使用numpy库 Numpy...
    99+
    2023-10-17
    数组 laravel spring
  • JavaScript数组操作技巧有哪些
    这篇“JavaScript数组操作技巧有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JavaScript数组操作技巧有...
    99+
    2023-06-27
  • 操作Dreamweaver的技巧有哪些
    这篇文章主要为大家展示了“操作Dreamweaver的技巧有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“操作Dreamweaver的技巧有哪些”这篇文章吧。  1、熟悉网页设计的网友就知道...
    99+
    2023-06-08
  • Java爬虫技术有哪些
    本篇内容主要讲解“Java爬虫技术有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java爬虫技术有哪些”吧!一、Jsoup的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提...
    99+
    2023-06-16
  • python爬虫库有哪些
    Python爬虫库有以下几个:1、Beautiful Soup一个Python的HTML/XML解析库,可以轻松地从网页中提取数据。...
    99+
    2023-05-13
    python爬虫库 python
  • Python中的字符串操作技巧有哪些?
    Python中的字符串操作技巧有哪些?字符串操作是Python编程中非常常见和重要的一部分。Python提供了许多内置函数和方法来进行字符串操作,让我们能够高效地处理和处理文本数据。下面我将介绍一些常用的字符串操作技巧,并给出具体的代码示例...
    99+
    2023-10-22
    连接(join) 切片(slice) 查找(find)
  • jQuery操作radio的技巧有哪些
    以下是一些使用jQuery操作radio的技巧:1. 设置选中的radio按钮:使用`prop()`方法将radio按钮的`chec...
    99+
    2023-08-15
    jQuery radio
  • python爬虫有哪些库
    python爬虫常用的库有:requests 做请求的时候用到,例如:requests.get("url")。selenium库,自动化会用到。lxml。beautifulsoup。pyquery网页解析库,语法和jquery非常像。pym...
    99+
    2024-04-02
  • 有哪些python爬虫库
    本篇文章给大家分享的是有关有哪些python爬虫库,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(...
    99+
    2023-06-14
  • MySQL数据库常用操作和技巧有哪些呢
    今天就跟大家聊聊有关MySQL数据库常用操作和技巧有哪些呢,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。MySQL数据库可以说是DBA们最常见和常用...
    99+
    2024-04-02
  • 爬虫技术的类型有哪些
    这篇文章主要讲解了“爬虫技术的类型有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“爬虫技术的类型有哪些”吧! 聚焦网络爬虫是“面向特定主题需求...
    99+
    2024-04-02
  • Python爬虫与数据分析之爬虫技能:u
    专栏目录: Python爬虫与数据分析之python教学视频、python源码分享,python Python爬虫与数据分析之基础教程:Python的语法、字典、元组、列表 Python爬虫与数据分析之进阶教程:文件操作、lambda表达...
    99+
    2023-01-31
    爬虫 技能 数据
  • 用python爬虫抓站的一些技巧总结
    在使用Python进行网站爬取时,有一些技巧可以帮助您更有效地抓取站点数据。下面是一些总结:1. 使用合适的爬虫框架:Python中...
    99+
    2023-08-23
    python
  • 跟踪数据的Python技巧有哪些
    这篇文章主要介绍“跟踪数据的Python技巧有哪些”,在日常操作中,相信很多人在跟踪数据的Python技巧有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”跟踪数据的Python技巧有哪些”的疑惑有所帮助!...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作