国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Python爬蟲的任務(wù)數(shù)據(jù)操作的小技巧

開發(fā) 后端
爬取某網(wǎng)站的項目列表頁,獲取其url,標題等信息,作為后續(xù)爬取詳情頁的任務(wù)url。

 需求

爬取某網(wǎng)站的項目列表頁,獲取其url,標題等信息,作為后續(xù)爬取詳情頁的任務(wù)url。

[[282996]]

先上代碼

代碼

  1. # -*- coding: utf-8 -*- 
  2. # @Time : 2019-11-08 14:04 
  3. # @Author : cxa 
  4. # @File : motor_helper.py 
  5. # @Software: PyCharm 
  6.  
  7. import asyncio  
  8. import datetime 
  9. from loguru import logger 
  10. from motor.motor_asyncio import AsyncIOMotorClient 
  11. from collections import Iterable 
  12.  
  13. try: 
  14.     import uvloop 
  15.  
  16.     asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) 
  17. except ImportError: 
  18.     pass 
  19.  
  20. db_configs = { 
  21.     'host''127.0.0.1'
  22.     'port''27017'
  23.     'db_name''mafengwo'
  24.     'user''' 
  25.  
  26. class MotorOperation: 
  27.     def __init__(self): 
  28.         self.__dict__.update(**db_configs) 
  29.         if self.user
  30.             self.motor_uri = f"mongodb://{self.user}:{self.passwd}@{self.host}:{self.port}/{self.db_name}?authSource={self.db_name}" 
  31.         else
  32.             self.motor_uri = f"mongodb://{self.host}:{self.port}/{self.db_name}" 
  33.         self.client = AsyncIOMotorClient(self.motor_uri) 
  34.         self.mb = self.client[self.db_name] 
  35.     async def save_data_with_status(self, items, col="seed_data"): 
  36.         for item in items: 
  37.             data = dict() 
  38.             data["update_time"] = datetime.datetime.now() 
  39.             data["status"] = 0  # 0初始 
  40.             data.update(item) 
  41.             print("data", data) 
  42.             await self.mb[col].update_one({ 
  43.                 "url": item.get("url")}, 
  44.                 {'$set': data, '$setOnInsert': {'create_time': datetime.datetime.now()}}, 
  45.                 upsert=True
  46.  
  47.      async def add_index(self, col="seed_data"): 
  48.         # 添加索引 
  49.         await self.mb[col].create_index('url'

因為我的爬蟲是異步網(wǎng)絡(luò)模塊aiohttp寫的,所以選擇了pymongo的異步版本motor進行操作。

異步代碼的基本屬性就是async/await成對的出現(xiàn),如果把上面的await和async去掉,就是類似pymongo的寫法了,這里異步不是重點,重點是我們怎么處理每條數(shù)據(jù)。

這里除了網(wǎng)頁的url,標題等信息,我需要附加3個字段。分別是create_time, status,update_time。

這三個字段分別代表,數(shù)據(jù)插入數(shù)據(jù),狀態(tài)和更新時間。

那么我為什么添加三個字段呢?

首先,我們需要判斷每次的任務(wù)數(shù)據(jù)是否存在,我這里的情況是存在就更新不存在就插入,那么我就需要一個查詢條件,作為更新的條件,很顯然這里可以使用任務(wù)的url作為唯一條件(你還可以使用url+標題做個md5然后保存),好了查詢條件確定。

下面說create_time這個比較好理解就是數(shù)據(jù)插入時間,關(guān)鍵是為什么還要一個update_time,這個的話和status字段有一定的關(guān)系。畫重點:這個status作為后續(xù)爬蟲進行爬取的一個標志用。目前這個status有4個值,0-4,我這是這樣定義的,

0:初始狀態(tài)

1:抓取中的任務(wù)

2:抓取成功

3:抓取失敗

4:抓取成功但是沒有匹配到任務(wù)。

后面隨著任務(wù)的爬取,狀態(tài)也是不斷變化的,同時我們需要更新update_time為最新的時間。這個目前的話是體現(xiàn)不出來什么作用,它的使用場景是,重復(fù)任務(wù)的抓取,比如今天我抓取了任務(wù)列表里的url1、url2,第二天的時候我如果再抓到,為了區(qū)分是抓取失敗還是抓取成功,我們根據(jù)create_time和update_time就可以進行推斷了,如果兩者相同而且是當前的日期說明剛抓的,如果update_time的日期比create_time新可以說明,抓到了重復(fù)的任務(wù)。關(guān)于字段的設(shè)計就啰嗦這么些。

下面是實現(xiàn),我們可以通過update_one方法,對數(shù)據(jù)作存在或者插入操作,因為url作為查詢條件,后面量大的話就最好添加一個索引。也就是上面的 add_index方法。

好了最好說插入更新的具體代碼

需要注意的是

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

$setOnInsert里面使用的字段是數(shù)據(jù)不存在的時候才插入的,存在就不動了,只插入$set里面指定的。

另外$setOnInsert里面使用的字段不能在$set里面再次出現(xiàn)

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

責任編輯:華軒 來源: Python學(xué)習(xí)開發(fā)
相關(guān)推薦

2022-08-15 15:43:29

Linuxcron

2016-10-21 14:35:52

Pythonwebget方法

2016-10-20 20:21:09

Python爬蟲技巧

2020-10-19 19:25:32

Python爬蟲代碼

2018-11-28 12:30:58

Python命令行編程語言

2009-06-15 15:54:53

Java中Cookie

2020-10-26 08:31:41

Python爬蟲開發(fā)

2020-08-21 08:52:09

Python數(shù)據(jù)分析工具

2016-08-05 15:33:26

Python編程異常

2022-03-11 19:54:07

Svelte應(yīng)用程序JavaScript

2024-11-12 12:08:06

JSON數(shù)據(jù)技巧

2013-04-16 10:48:04

Python序列

2022-07-15 15:30:13

Python技巧

2021-05-07 16:02:54

Python代碼優(yōu)化

2023-10-26 18:03:14

索引Python技巧

2021-06-16 10:50:16

Python代碼優(yōu)化

2022-06-21 09:02:49

python技巧

2021-07-16 10:31:29

MySQLDump技巧

2023-09-15 12:34:23

2020-12-24 09:18:51

SQL數(shù)據(jù)庫函數(shù)
點贊
收藏

51CTO技術(shù)棧公眾號

国产精品美女久久久久久久久| 日韩欧美美女在线观看| 亚洲三级视频在线观看| 成年在线观看视频| 亚洲综合自拍| 91精品中国老女人| 国产成人1区| 久久久久亚洲精品国产| 日韩国产一二三区| 亚洲日本欧美日韩高观看| 黄视频网站在线| 欧美午夜影院一区| 精品99又大又爽又硬少妇毛片| 亚洲综合色视频| 伊人资源视频在线| 亚洲免费av在线| 97在线观看播放| 国产女人aaa级久久久级| 免费成人在线视频网站| 成人一级视频在线观看| 日韩小视频网站| 91日韩在线专区| 国产精品无码专区av在线播放| 91丨porny丨户外露出| 国产熟人av一二三区| 91啪九色porn原创视频在线观看| 精品无码国模私拍视频| 久久亚洲精品国产精品紫薇| 热久久精品国产| 亚洲图片激情小说| 国内福利写真片视频在线 | 色综合天天综合网国产成人网| 亚洲精品三区| 久久久久久久久91| 亚洲老女人视频免费| 国产在线观看精品| 红桃视频欧美| 色综合666| 床上的激情91.| www.精品在线| 五月激情综合网| 91网在线看| 日韩在线视频中文字幕| 六月丁香久久丫| 日韩av免费网站| 国语自产精品视频在线看8查询8| 久久久久一区二区三区| 精品一区二区三区香蕉蜜桃| 成人一级片网站| 亚洲精品水蜜桃| 欧美精品videos另类| 亚洲精品国产成人| 香蕉久久精品| 欧美另类网站| 久久久久9999亚洲精品| 国产视频二区在线观看| 亚洲图片在区色| 欧美色婷婷久久99精品红桃| 欧美一区国产一区| 日本一区二区三区久久久久久久久不| 色视频在线看| 永久免费毛片在线播放不卡| 欧美特黄一级大片| 日韩欧美一区二区在线观看| 91麻豆国产在线观看| 夜色资源站国产www在线视频 | 性综艺节目av在线播放| 欧美精品日韩一本| 9999在线精品视频| 99中文字幕| 久久久青草青青国产亚洲免观| 韩国中文字幕2020精品| 亚洲欧美日韩综合| 国产伦精品一区二区三区视频| 亚洲精品美女久久7777777| 亚洲人成7777| 制服诱惑亚洲| 92福利视频午夜1000合集在线观看| 国产真实精品久久二三区| 中文字幕不卡| 日韩在线中文字幕| 夜夜嗨一区二区| 电影天堂爱爱爱爱| 一区二区亚洲欧洲国产日韩| 91精品国产福利在线观看麻豆| 妞干网在线免费视频| 欧美va亚洲va国产综合| 97精品国产福利一区二区三区| 亚洲国产精品久久久久婷蜜芽| 日韩女优毛片在线| 亚洲蜜桃视频| 美女av电影| 日韩在线视频网| 免费成人在线影院| 国产福利第一视频在线播放| 欧美一级大片视频| 91免费小视频| 超碰aⅴ人人做人人爽欧美| 久久艳妇乳肉豪妇荡乳av| 亚洲一区免费在线观看| 日韩成人精品一区二区三区| 亚洲一二区在线| 欧美日本乱大交xxxxx| 天天射天天综合网| 性综艺节目av在线播放| 91精品国产一区| 国产日本欧洲亚洲| 欧美成人xxxx| 黄色录像特级片| 欧美三级电影网站| 香蕉久久网站| 色网址在线观看| 国产成人综合精品在线| 国产精品久久久久久久久免费丝袜 | 日本女优在线视频一区二区| 在线观看免费视频一区二区三区| 91wwwcom在线观看| 国产午夜精品在线观看| 偷拍自拍亚洲| 国产91在线视频观看| 国产一区二区黄| 国产一区二区影院| 黄视频网站在线观看| 亚洲一区二区三区精品在线观看| 欧美电影免费提供在线观看| 水蜜桃久久夜色精品一区的特点| 老司机午夜在线| 欧洲在线视频一区| 欧美tk丨vk视频| 韩国欧美国产1区| 美女的胸无遮挡在线观看| 亚洲综合五月天| 亚洲天堂av高清| 久久伊人蜜桃av一区二区| 99久久免费精品国产72精品九九| 最新天堂中文在线| 国产成人精品免费视频| 亚洲成人免费影院| 国产综合欧美| 成人影音在线| 色综合久久久久无码专区| 久久视频免费在线播放| 国产精品天天摸av网| 综合久久成人| 99re99| 国产日韩欧美另类| 欧美三级中文字幕| 日韩精品91亚洲二区在线观看| 爱搞国产精品| 毛片一区二区三区四区| 国产v综合ⅴ日韩v欧美大片| 一本大道久久a久久综合| 国产一区二区三区成人欧美日韩在线观看 | 久久成人久久爱| 欧美××××黑人××性爽| 日韩少妇内射免费播放18禁裸乳| 久久亚洲春色中文字幕| 亚洲日本护士毛茸茸| 欧美激情第二页| 牛牛精品在线| 免费看a级黄色片| 国产精品美女免费| 欧美一区二区三区在线观看视频 | 日本高清不卡三区| 在线观看国产精品淫| 国产精品毛片a∨一区二区三区| 91精品国产91久久久久久密臀| 青青草原av在线| 99久久激情视频| 91免费看片在线| 亚洲激情电影中文字幕| 国产视频在线观看一区二区三区| 黑人操亚洲人| 国产午夜精品久久久久免费视| 国产二区视频在线| 热久久美女精品天天吊色| 欧美日韩国产一级片| caoporen国产精品视频| 欧美艳星介绍134位艳星| eeuss鲁一区二区三区| 日日干夜夜操s8| 久久久久久高清| 日韩中文字幕在线看| 亚洲国产精品久久艾草纯爱| 久久午夜电影| 国产96在线亚洲| yes4444视频在线观看| av 日韩 人妻 黑人 综合 无码| 98视频在线噜噜噜国产| 51久久夜色精品国产麻豆| 久久久久久夜精品精品免费| 99热在线精品观看| 嗯用力啊快一点好舒服小柔久久| 国产精品久久麻豆| 免费的很黄很污的视频网站| 日韩欧美亚洲区| 国产精品第七影院| 亚洲老司机av| 黑人巨大精品欧美一区二区一视频| 成人性生交大片免费看中文网站|