python基礎23(2025.6.29)分布式爬蟲(增量式爬蟲去重)redis應用_(未完成!)

本次寫一個爬取網易新聞的案例。因為redis能處理高并發,存儲數據也可以,故不用mysql。而且新聞網站容易更新很多,而mysql只能持久化存儲。

import scrapy
import re
import json
import redis  # 用它來去除重復, 記錄訪問過的urlclass WangyiSpider(scrapy.Spider):name = "wangyi"allowed_domains = ["163.com"]start_urls = ["https://news.163.com/special/cm_guoji/?callback=data_callback"]code_re_obj = re.compile(r"data_callback\((?P<code>.*)\)", re.S) # 1conn = redis.Redis(host="127.0.0.1", port=6379, password="123456", db=4, decode_responses=True)def parse(self, resp, **kwargs):# 執行后續操作之前. 一定要先確認好. 你收到的東西對不對.# print(resp.text)# scrapy獲取json格式的數據. 可以直接resp.json(), 直接拿到字典# json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)# 典型的. 你拿到的數據不是json# print(resp.json())code = WangyiSpider.code_re_obj.search(resp.text).group("code")news = json.loads(code)for new in news:# print(new.get("tlink"))# print(new['tlink'])# print(new['title'])# 我要采集新聞的內容# 發請求. 獲取到詳情頁中的內容# 需要判斷該url是否已經被訪問過了.# 必須得知道我訪問過什么 需要把已經訪問過的東西記錄下來.tlink = new['tlink']if self.conn.sismember("news:wangyi", tlink):print("已經訪問過了. ")else:yield scrapy.Request(url=new['tlink'], callback=self.parse_detail)# 用url進行控制是否訪問過了   # 77777 9999# 如果是post請求呢?# http://www.baidu.com/a/b  formdata: id=10086  => 樵夫11愛你# http://www.baidu.com/a/b  formdata: id=10087  => 樵夫12愛你# http://www.baidu.com/a/b  formdata: id=10088  => 樵夫2123愛你# http://www.baidu.com/a/b  formdata: id=10089  => 樵夫12321愛你# 增量爬蟲. 但是這個增量爬蟲和樵夫講的不一樣了. 樵夫去重復用的是url. 每個詳情頁的url都是不一樣的# 增量爬蟲的核心邏輯是  去除重復.# data_callback([{title: "韓男子性侵)", ....}])# 這是典型的jsonp的邏輯#  xxxxxx(數據)# 可以用正則表達式來完成數據的提取def parse_detail(self, resp):print(resp.url)post_body = resp.xpath("//div[@class='post_body']/p/text()").extract()post_title = resp.xpath("//h1[@class='post_title']/text()").extract_first()post_body = "".join(post_body).strip()print(post_title, post_body)# 16個庫.# news:#   wangyi#   tengxun#   xxxxself.conn.sadd("news:wangyi", resp.url) #2

運行的講解一:開啟redis
在這里插入圖片描述

在這里插入圖片描述
這里的意思是,我們為了“驗證訪問的url”每次訪問都是不一樣的,如果訪問了,我們就不再訪問

但是如果是post請求,我們就可以如上圖那樣記錄“不一樣的參數”

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/89096.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/89096.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/89096.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Springboot 集成 SpringState 狀態機

Springboot 集成 SpringState 狀態機 1.SpringState 簡介2.狀態機示例2.1 項目結構和依賴包2.2 定義事件類和狀態類2.3 Spring 事件監聽器2.4 狀態機持久化類2.4.1 Redis 狀態機持久化容器2.4.2 Redis 配置2.4.3 狀態機監聽器 2.5 裝機器容器2.6 狀態機事件發送器2.7 狀態機配置…

實戰四:基于PyTorch實現貓狗分類的web應用【2/3】

?一、需求描述 實戰四分為三部分來實現&#xff0c;第二部分是基于PyTorch的貓狗圖像可視化訓練的教程&#xff0c;實現了一個完整的貓狗分類模型訓練流程&#xff0c;使用預訓練的ResNet50模型進行遷移學習&#xff0c;并通過SwanLab進行實驗跟蹤。 效果圖 ?二、實現思路 …

對比幾個測試云的一些速度

最近被hosting vps主機的速度給困擾了&#xff0c;干脆放下手中的活 測試下 test.php放在網站根目錄即可 代碼如下&#xff1a; <?php /*** 最終版服務器性能測試工具* 測試項目&#xff1a;CPU運算性能、內存讀寫速度、硬盤IO速度、網絡下載速度*/// 配置參數&#xff…

UE5 Grid3D 學習筆記

一、Neighbor Grid 3D 的核心作用 NeighborGrid3D 是一種基于位置的哈希查找結構&#xff0c;將粒子按空間位置劃分到網格單元&#xff08;Cell&#xff09;中&#xff0c;實現快速鄰近查詢&#xff1a; 空間劃分&#xff1a;將模擬空間劃分為多個三維網格單元&#xff08;Cel…

Spring AI ——在springboot應用中實現基本聊天功能

文章目錄 前言測試環境項目構建依賴引入指定openai 相關配置基于 application.yml 配置 Open AI 屬性application.yml編寫測試類測試請求基于讀取后配置請求編寫測試接口測試效果展示流式輸出前言 AI 技術越來越火爆,作為Java開發人員也不能拖了后腿。 前段時間使用LangChain…

條件概率:不確定性決策的基石

條件概率是概率論中的核心概念&#xff0c;用于描述在已知某一事件發生的條件下&#xff0c;另一事件發生的概率。它量化了事件之間的關聯性&#xff0c;是貝葉斯推理、統計建模和機器學習的基礎。 本文由「大千AI助手」原創發布&#xff0c;專注用真話講AI&#xff0c;回歸技術…

搭建Flink分布式集群

1. 基礎環境&#xff1a; 1.1 安裝JDK 本次使用 jdk-11.0.26_linux-x64_bin.tar.gz 解壓縮 tar -zxvf jdk-11.0.26_linux-x64_bin.tar.gz -C /usr/local/java/ 配置環境變量&#xff1a; vi /etc/profileJAVA_HOME/usr/local/java/jdk-11.0.26 CLASSPATH.:${JAVA_HOME}/li…

基于ssm校園綜合服務系統微信小程序源碼數據庫文檔

摘 要 隨著我國經濟迅速發展&#xff0c;人們對手機的需求越來越大&#xff0c;各種手機軟件也都在被廣泛應用&#xff0c;但是對于手機進行數據信息管理&#xff0c;對于手機的各種軟件也是備受用戶的喜愛&#xff0c;校園綜合服務被用戶普遍使用&#xff0c;為方便用戶能夠可…

桌面小屏幕實戰課程:DesktopScreen 17 HTTPS

飛書文檔http://https://x509p6c8to.feishu.cn/docx/doxcn8qjiNXmw2r3vBEdc7XCBCh 源碼參考&#xff1a; /home/kemp/work/esp/esp-idf/examples/protocols/https_request 源碼下載方式參考&#xff1a; 源碼下載方式 獲取網站ca證書 openssl s_client -showcerts -connec…

uniapp上傳gitee

右鍵點擊項目&#xff0c;選擇git提交&#xff0c;會彈出這樣的彈窗 在Message輸入框里面輸入更新的內容&#xff0c;選擇更新過的文件&#xff0c;然后點擊commit 然后點擊push 后面會讓你填寫gitee的用戶名和密碼 用戶名就是郵箱 密碼就是登錄gitee的密碼

重寫(Override)與重載(Overload)深度解析

在Java面向對象編程中&#xff0c;多態性是一個核心概念&#xff0c;它允許我們以統一的方式處理不同類型的對象。而實現多態性的兩種重要機制便是方法的“重寫”&#xff08;Override&#xff09;與“重載”&#xff08;Overload&#xff09;。透徹理解這兩者之間的區別與聯系…

Go 語言中操作 SQLite

sqlite以其無需安裝和配置&#xff1a;直接使用數據庫文件&#xff0c;無需啟動獨立的數據庫服務進程。 單文件存儲&#xff1a;整個數據庫&#xff08;包括表、索引、數據等&#xff09;存儲在單個跨平臺文件中&#xff0c;便于遷移和備份。 在應對的小型應用軟件中.有著不可…

【硬核數學】2.3 AI的“想象力”:概率深度學習與生成模型《從零構建機器學習、深度學習到LLM的數學認知》

歡迎來到本系列的第八篇文章。在前七章中&#xff0c;我們已經構建了一個強大的深度學習工具箱&#xff1a;我們用張量來處理高維數據&#xff0c;用反向傳播來高效地計算梯度&#xff0c;用梯度下降來優化模型參數。我們訓練出的模型在分類、回歸等任務上表現出色。 但它們有…

華為云Flexus+DeepSeek征文|Dify平臺開發搭建口腔牙科24小時在線問診系統(AI知識庫系統)

引言&#xff1a;為什么需要口腔牙科24小時在線問診系統&#xff1f; 在口腔醫療領域&#xff0c;“時間”是患者最敏感的需求之一——深夜牙齒突發疼痛、周末想提前了解治療方案、異地患者無法及時到院……傳統“工作時間在線”的咨詢模式已無法滿足用戶需求。同時&#xff0…

嵌入式硬件中電容的基本原理與詳解

大家好我們今天重討論點知識點如下: 1.電容在電路中的作用 2.用生活中水缸的例子來比喻電容 3.電容存儲能力原理 4.電容封裝的種類介紹電容種類圖片辨識 5.X 電容的作用介紹 6.Y 電容的作用介紹7.鉭電容的優點及特性 7.鉭電容的缺點及特性 8. 鋁電解電容的優點及特性…

中央空調控制系統深度解析:從原理到智能AIOT運維

——附水冷式系統全電路圖解與技術參數 一、中央空調系統架構與技術演進 1. 兩大主流系統對比 技術趨勢&#xff1a;2023年全球冷水機組市場占比達68%&#xff08;BSRIA數據&#xff09;&#xff0c;其核心優勢在于&#xff1a; - 分區控溫精度&#xff1a;0.5℃&#…

document.write 和 innerHTML、innerText 的區別

document.write 與 innerHTML、innerText 的區別 document.write 直接寫入 HTML 文檔流&#xff0c;若在頁面加載完成后調用會覆蓋整個文檔。常用于動態生成內容&#xff0c;但會破壞現有 DOM 結構&#xff0c;不推薦在現代開發中使用。 document.write("<p>直接寫…

日志分析與實時監控:Elasticsearch在DevOps中的核心作用

引言 在現代DevOps實踐中&#xff0c;日志分析與實時監控是保障系統穩定性與性能的關鍵。Elasticsearch作為分布式搜索與分析引擎&#xff0c;憑借其高效的索引與查詢能力&#xff0c;成為構建日志管理與監控系統的核心組件。本文將深入探討Elasticsearch在DevOps中的應用&…

Unity Catalog 三大升級:Data+AI 時代的統一治理再進化

在剛剛落幕的 2025 Databricks Data AI Summit 上&#xff0c;Databricks 重磅發布了多項 Lakehouse 相關功能更新。其中&#xff0c;面向數據湖治理場景的統一數據訪問與管理方案 —— Unity Catalog&#xff0c;迎來了三大關鍵升級&#xff1a;全面支持 Apache Iceberg、面向…

電容屏觸摸不靈敏及跳點問題分析

在電容屏的使用過程中&#xff0c;觸摸不靈敏和觸點不精準是極為常見且讓人困擾的問題。這些問題不僅影響用戶的操作體驗&#xff0c;在一些對觸摸精度要求較高的場景&#xff0c;如工業控制、繪圖設計等領域&#xff0c;還可能導致嚴重的后果。下面我們就來深入剖析一下這兩個…