python 上海新聞爬蟲, 東方網 + 澎湃新聞

1. 起因, 目的:

  • 繼續做新聞爬蟲。我之前寫過。
  • 此文先記錄2個新聞來源。
  • 后面打算進行過濾,比如只選出某一個類型新聞。

2. 先看效果

過濾出某種類型的新聞,然后生成 html 頁面,而且,自動打開這個頁面。
比如科技犯罪類的新聞。

3. 過程:

代碼 1 ,爬取東方網
  • 很久之前寫過,代碼還能用。
  • 這里雖然是復制一下,也是為了自己方便。
import os
import csv
import time
import requests"""
# home: https://sh.eastday.com/
# 1. 標題, url, 來源,時間
"""headers = {'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36'
}def get_data(pages):file_name = '5.8.400.csv'             # 400個標題。has_file =  os.path.exists(file_name)# 打開文件,寫入模式with open(file_name, 'a', newline='', encoding='utf-8') as file:# 創建一個csv.DictWriter對象,用于寫入字典數據columns = ['title', 'url', 'time','source']writer = csv.DictWriter(file, fieldnames=columns)# 寫入表頭if not has_file:writer.writeheader()# 爬取數據. 默認是 20頁,每頁20條。 每天大概有400個新聞。for i in range(pages):print(f"正在爬取第{i+1} / {pages}頁數據")time.sleep(0.5)url = f"https://apin.eastday.com/apiplus/special/specialnewslistbyurl?specialUrl=1632798465040016&skipCount={i * 20}&limitCount=20"resp = requests.get(url, headers=headers)if resp.status_code!= 200:print(f"請求失敗:{resp.status_code}")breakret = resp.json()junk = ret['data']['list']for x in junk:item = dict()# print(x)item["time"] = x["time"]item['title'] = x["title"]item["url"] = x["url"]item["source"] = x["infoSource"]# 寫入數據writer.writerow(item)# print(item)get_data(pages=20)
代碼 2 , 爬取, 澎湃新聞
  • 也是很簡單。
import os
import csv
import time
import requests
from datetime import datetime, timedelta# 請求頭
headers = {'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36','Content-Type': 'application/json',  # 響應頭要求 Content-Type'Referer': 'https://www.thepaper.cn/',  # 引薦來源,遵循 strict-origin-when-cross-origin'Origin': 'https://www.thepaper.cn'  # 跨域請求需要 Origin
}def get_thepaper_data(file_name='peng_pai_400.csv', max_pages=100, channel_id='-8'):"""爬取澎湃新聞數據,保存到 CSV 文件參數:file_name: 輸出 CSV 文件名max_pages: 最大爬取頁數channel_id: 新聞頻道 ID"""# 檢查文件是否存在has_file = os.path.exists(file_name)# 打開 CSV 文件,追加模式with open(file_name, 'a', newline='', encoding='utf-8') as file:columns = ['title', 'url', 'time', 'source']writer = csv.DictWriter(file, fieldnames=columns)if not has_file:writer.writeheader()# 計算 startTime(當前時間戳)current_time = int(time.time() * 1000)  # 當前毫秒時間戳start_time = current_time  # 使用此時此刻的時間# 爬取數據for page in range(1, max_pages + 1):time.sleep(0.5)  # 請求間隔payload = {'channelId': channel_id,'excludeContIds': [],  # 留空,需根據實際需求調整'province': '','pageSize': 20,'startTime': start_time,'pageNum': page}url = 'https://api.thepaper.cn/contentapi/nodeCont/getByChannelId'resp = requests.post(url, headers=headers, json=payload, timeout=10)if resp.status_code != 200:print(f"請求失敗:{url}, 狀態碼: {resp.status_code}, 頁碼: {page}")breakret = resp.json()# print(f"頁面 {page} 響應:{ret}")news_list = ret['data']['list']for item in news_list:# print(item)news = {}news['title'] = item.get('name', '')news['url'] = f"https://www.thepaper.cn/newsDetail_forward_{item.get('originalContId', '')}"news['time'] = item.get('pubTimeLong', '')news['source'] = item.get('authorInfo', {}).get('sname', '澎湃新聞')# 轉換時間格式(如果 API 返回時間戳)news['time'] = datetime.fromtimestamp(news['time'] / 1000).strftime('%Y-%m-%d %H:%M:%S')# 直接寫入,不去重writer.writerow(news)print(f"保存新聞:{news}")if __name__ == "__main__":get_thepaper_data(file_name='peng_pai_400.csv', max_pages=20, channel_id='-8')

4. 結論 + todo

1 數據來源,還需要增加。可選項:

- 上觀新聞 shobserver.com   與解放日報關聯,報道上海本地案件。
- 新浪新聞 news.sina.com.cn  全國性新聞,包含科技犯罪。
- 騰訊新聞 news.qq.com       聚合多種來源,覆蓋廣泛。
  1. 聚合。 提取出自己感興趣的新聞,比如,科技犯罪。

希望對大家有幫助。

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

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

相關文章

使用bitNet架構

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言一、配置二、報錯總結 前言 大型語言模型(LLM)面臨的挑戰:高能耗、高內存需求、部署門檻高。 微軟提出 BitNet 架構&#x…

筆試強訓(十七)

文章目錄 活動安排題解代碼 哈夫曼編碼題解代碼 奇數位丟棄題解代碼 活動安排 題目鏈接 題解 1. 區間貪心 排序 2. 如果有重疊部分,每次選擇右端點較小的,可以盡可能多的選擇區間個數,如果沒有重疊部分,選擇下一個區間的右端…

數據庫數據清洗、預處理與質量監控、 數據質量的核心概念

數據庫數據清洗、預處理與質量監控、 數據質量的核心概念 準確性 (Accuracy) 準確性指數據正確反映其所描述的實體或事件真實狀況的程度。準確的數據應當與現實世界中的實際情況一致。 一致性 (Consistency) 一致性指數據在不同表、系統或時間點之間保持邏輯上一致的程度。…

Docker組件詳解:核心技術與架構分析

Docker詳解:核心技術與架構分析 Docker作為一種容器化技術,已經徹底改變了軟件的開發、交付和部署方式。要充分理解和利用Docker的強大功能,我們需要深入了解其核心組件以及它們如何協同工作。本文將詳細介紹Docker的主要組件、架構設計以及…

【言語】刷題3

front:刷題2 題干 超限效應介紹冰桶挑戰要避免超限效應 B明星的作用只是病痛挑戰的一個因素,把握程度才是重點,不是強化弱化明星作用,排除 A雖沒有超限效應,但是唯一的點出“冰桶效應”的選項,“作秀之嫌…

【fastadmin開發實戰】在前端頁面中使用bootstraptable以及表格中實現文件上傳

先看效果: 1、前端頁面中引入了表格 2、表格中實現文件上傳 3、增加截止時間頁面 難點在哪呢? 1、這是前端頁面,并不支持直接使用btn-dialog的類屬性實現彈窗; 2、前端頁面一般綁定了layout模板,如何實現某個頁面不…

豆包:基于多模態交互的智能心理咨詢機器人系統設計與效果評估——情感計算框架下的對話機制創新

豆包:基于多模態交互的智能心理咨詢機器人系統設計與效果評估——情感計算框架下的對話機制創新 摘要 隨著人工智能在心理健康領域的應用深化,本文提出一種融合情感計算與動態對話管理的智能心理咨詢機器人系統架構。通過構建“用戶狀態-情感響應-策略生成”三層模型,結合…

【漫話機器學習系列】257.填補缺失值(Imputing Missing Values)

數據科學必備技能:填補缺失值(Imputing Missing Values) 在數據分析和機器學習項目中,缺失值(Missing Values) 是非常常見的問題。缺失的數據如果處理不當,會嚴重影響模型的訓練效果&#xff0…

基于千眼狼高速攝像機與三色掩模的體三維粒子圖像測速PIV技術

研究背景 航空航天、能源動力領域,測量三維瞬態流場的速度場信息對于理解流體力學行為、優化系統設計非常關鍵。 傳統三維粒子圖像測速技術如Tomo層析PIV,因依賴多相機陣列,存在系統體積、操作復雜,在封閉空間測量存在困難&#…

MongoDB 的主要優勢和劣勢是什么?適用于哪些場景?

MongoDB 的主要優勢 (Advantages) 靈活的文檔模型 (Flexible Document Model): 無需預定義模式 (Schemaless/Flexible Schema): 這是 MongoDB 最核心的優勢之一。它存儲 JSON 格式的文檔,每個文檔可以有不同的字段和結構。這使得在開發過程中修改數據結構非常容易&a…

css iconfont圖標樣式修改,js 點擊后更改樣式

背景: 在vue項目中,通過點擊/鼠標覆蓋,更改選中元素的樣式,可以通過js邏輯,也可以根據css樣式修改。包括以下內容:iconfont圖標的引入以及使用,iconfont圖標樣式修改【導入文件是純白&#xff0…

CosyVoice介紹

CosyVoice介紹 CosyVoice是阿里開源的一個多語言語音生成大模型,可應用于TTS(Text To Speech) 工具的開發。它支持內置預制語音生成、語音克隆、自然語言控制語音生成等功能。CosyVoice的另一個亮點在于它對生成語音情感和韻律的精細控制,這是通過富文本…

分布式任務調度XXL-Job

? XXL-Job 是一款輕量級、分布式的任務調度平臺,其核心設計解決了傳統任務調度(如Quartz)在分布式場景下的?任務分片?、?高可用?、?可視化管控?等痛點。以下從原理、核心架構、應用場景、代碼示例及關聯中間件展開詳解 一、主流任務…

GOOSE 協議中MAC配置

在 GOOSE(Generic Object Oriented Substation Event)協議中,主站(Publisher)發送的 MAC 地址不需要與從站(Listener)的 MAC 地址一致,其通信機制與 MAC 地址的匹配邏輯取決于 GOOSE…

交流充電樁IEC 61851-1和IEC 61851-21-2標準測試項目

交流充電樁IEC 61851-1和IEC 61851-21-2標準測試項目 立訊檢測的光儲充實驗室專注于光伏、儲能、充電設施等新能源領域的檢測與認證服務,以下是詳細介紹: ?1. 實驗室概況? ?覆蓋領域?:光伏逆變器、儲能電池系統、充電樁、便攜式儲能電…

備戰菊廠筆試2-BFS記憶化MLE?用Set去重-Set會TLE?用SortedSet剪枝

目錄 200.島嶼數量 不用getnei,直接在dfs判斷,去掉解包 如果害怕棧溢出那么可以用bfs 2617.網格圖中最少訪問的格子數 注意特判! MLE主要是因為vis占用的內存過大 用SortedSet有序剪枝 什么是SortedSet? 基本性質 導入 …

STM32H743輸出50%的占空比波形

使用cubeMX進行配置如下: 時鐘配置如下: 具體代碼如下: /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief : Main program b…

MYSQL 查詢去除小數位后多余的0

MYSQL 查詢去除小數位后多余的0 在MySQL中,有時候我們需要去除存儲在數據庫中的數字字段小數點后面多余的0。這種情況通常發生在處理金額或其他需要精確小數位的數據時。例如,數據庫中存儲的是decimal (18,6)類型的數據,但在頁面展示時不希望…

物理:從人體組成角度能否說明基本粒子的差異性以及組織結構的可預設性?

人類的個體差異源于粒子組合的復雜性、環境與隨機性的相互作用,而非基本粒子本身的差異性。以下分層次解析: 一、基本粒子的同質性與組合多樣性 1. 基本粒子的同一性 標準模型確認:同種類基本粒子(如電子、上夸克)具有完全相同的質量、電荷等屬性,不存在個體差異。泡利不…

應用探析|千眼狼PIV測量系統在職業病防治中的應用

1、職業病防治背景 隨著《職業病防治法》及各省市“十四五”職業病防治規劃的深入推進,工作場所粉塵危害監測與防控已成為疾控部門的核心任務。以礦山、建材、冶金、化工等行業為例,粉塵濃度、分布及傳播特性的精準測量是評估職業病風險的關鍵。 傳統的…