新闻文本抓取

人民网新闻抓取Python(内附完整代码) 本文在遵守Robots友好爬虫协议的前提下,在原始新闻列表页面向Web服务器发送携带cookies的请求,提取出子页面超链接,并存储成URL列表。遍历列表,通过selenium模拟浏览器技术,获得每一个子页面的网页内容,而后使用正则表达式、BeautifulSoup库的css选择器,find,findall,select等查找提取元素方法,获取子页面的新闻标题,新闻时间,报道来源,内容,责任编辑,如果页面存在图片或视频元素,提取其超链接后再次发送请求,下载网页内嵌多媒体 阅读详情

1、后台动态渲染抓取页面信息:

option=webdriver.ChromeOptions()
option.add_argument('headless') #
browser = webdriver.Chrome(executable_path='../data/chromedriver/chromedriver.exe',options=option)

2、整体代码块:

import configparser
import os
import re
import sys

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait

from utils.write_es_utils import batch_data

config = configparser.ConfigParser()
config.read('../conf/config.txt', encoding="utf-8")
project_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(project_path)
index_name = config.get("elasticsearch","NEWS")
new_url_list = list()
new_url_list.insert(0,"http://www.people.com.cn/")
new_url_list.insert(0,"https://news.163.com/")
has_get_url_set = set()
def get_all_message_url(url):
    browser.get(url)
    wait = WebDriverWait(browser, 10)
    inner_set = set()
    try:
        wait.until(
            lambda driver: driver.find_elements(By.XPATH, '//a[@href]'))
        outer_current_content = browser.find_elements(By.XPATH,
                                                      '//a[@href]')
        for each in outer_current_content:
            inner_url = each.get_attribute('href').strip()
            if inner_url and inner_url.endswith('.html'):
                inner_set.add(inner_url)

    except Exception as e:
        pass
    return inner_set

def get_all_message(url):
    content = list()
    browser.get(url)
    wait = WebDriverWait(browser, 10)
    try:
        wait.until(
            lambda driver: driver.find_elements(By.XPATH, '//p'))
        current_content = browser.find_elements(By.XPATH, '//p')
        for each in current_content:
            if re.search(r'Copyright|人 民 网 版 权|人民日报社概况|信息服务许可证|服务邮箱',each.text):
                continue
            if each.text and len(each.text.strip())>15:
                content.append({"text":each.text.strip(),"type":"scrap"})
    except Exception as e:
        print(url)
    return list(content)

option=webdriver.ChromeOptions()
option.add_argument('headless') #
browser = webdriver.Chrome(executable_path='../data/chromedriver/chromedriver.exe',options=option)

input_file = open('../data/news.txt','a+',encoding='utf-8')
while len(new_url_list)>0:
    url = new_url_list.pop(-1)
    if url in has_get_url_set:
        continue
    has_get_url_set.add(url)

#你需要爬取的网页
    try:
        content_list = get_all_message(url)
        if len(content_list)>0:
            batch_data(content_list, index_name)

        content_url = get_all_message_url(url)
        for each in content_url:
            if each not in has_get_url_set:
                new_url_list.insert(0,each)


    except Exception as e:
        pass

相关工具类es:

import configparser
import time
from elasticsearch import Elasticsearch
from elasticsearch import helpers

config = configparser.ConfigParser()
config.read('../conf/config.txt', encoding="utf-8")
es = Elasticsearch(hosts=[config.get("elasticsearch","ES_MESSAGEW")])


def timer(func):
    def wrapper(*args, **kwargs):
        start = time.time()
        res = func(*args, **kwargs)
        print('共耗时约 {:.2f} 秒'.format(time.time() - start))
        return res

    return wrapper


@timer
def batch_data(data_list, index_name, _id_name=None):
    """ 批量写入数据 """
    if _id_name:
        action = [{
            "_index": index_name,
            "_id": data_list[i][_id_name],
            '_type': '_doc',
            "_source": data_list[i]
        } for i in range(len(data_list))]
    else:
        action = [{
            "_index": index_name,
            '_type': '_doc',
            "_source": data_list[i]
        } for i in range(len(data_list))]
    helpers.bulk(es, action)


def create_index(index_name, mapping_settings):
    if es.indices.exists(index_name):
        es.indices.delete(index_name)
    res = es.indices.create(index=index_name, body=mapping_settings)
def create_alias(index,alias):
    es.indices.put_alias(index,alias)

def delete_index(index_name):
    if es.indices.exists(index_name):
        es.indices.delete(index_name)

def delete_alias(index,alias):
    es.indices.delete_alias(index,alias)
def get_alias_index_name(alias):
    if es.indices.exists_alias(alias):
        return es.indices.get_alias(name=alias)
    else:
        return None
def refresh_index(index_name):
    es.indices.refresh(index_name)


def clean_data(index_name):
    body = {
        "query": {
            "match_all": {}
        }
    }
    es.delete_by_query(index_name, body)

【python学习笔记】自动抓取雅虎新闻的内容 在雅虎新闻(http://news.yahoo.com/)搜索,过滤掉来源自雅虎新闻的新闻,提取在html源代码中包含的新闻正文,采用计算文段密度并提取最长文段为正文。对文本进行清洗,去除html标记、无用字段等垃圾,存成txt。再去除无效、过短等不符合质量要求的新闻, 存在的问题是一旦有http报错,就会终止程序,极大影响效率。 #coding:utf-8 import re import 阅读详情

相关推荐

大模型进阶 - AI新闻资讯自动抓取并播报

本案例实现了一个AI新闻播报系统,通过Python编写FastAPI服务,使用crawl4ai爬虫工具抓取AI新闻网站(aibase.com)的最新资讯。系统采用BeautifulSoup解析网页内容,获取新闻标题、日期和正文,并支持异步批量处理。Dify平台创建工作流,包含新闻抓取、LLM摘要生成(DeepSeek-V3模型)、文本转语音等功能模块,最终输出结构化新闻摘要和语音播报。系统实现了从新闻采集、内容提取、智能摘要到语音合成的完整自动化流程,代码展示了网页解析、异步处理、API接口开发等关键技术。

hickman2023的博客 1362

抓取新闻联播文本

然后安装pyinstaller 将py文件打包成exe文件即可,得到一个自动抓取新闻联播文本的程序。

n 726

Python 爬虫实战:在新浪新闻抓取财经新闻内容,分析经济形势

在本文中,我们详细介绍了如何使用 Python 爬虫抓取新浪新闻财经板块的新闻内容,并进行了数据分析和可视化。通过爬虫技术,我们能够快速获取大量财经新闻数据,通过数据分析,可以洞察经济动态和市场趋势,为投资决策提供重要参考。在实际应用中,可以根据需求进一步扩展爬虫功能,例如抓取更多维度的数据、进行更深入的数据挖掘和分析等。

u014481728的博客 2226

新闻颠覆者:优采云自动文本抓取技术,九大优势全解析

优采云自动文本抓取技术,是一次极具创新意义的科技突破,它为传统新闻报道注入了新鲜血液,推动着新闻行业的变革。在本文中,我将从九个角度详细剖析这项技术的优越性及未来发展潜力。1.自动采集:快速、高效、准确优采云自动文章采集采用先进算法和机器学习技术,自动收集各大网站及社交平台的热门新闻资讯

oUY5dETx的博客 443

Python爬虫博客:如何抓取时事新闻信息 —— 从各大新闻网站获取实时新闻数据

发送请求:向目标新闻网站发送 HTTP 请求,获取网页内容。解析网页:使用解析库(如)从网页中提取新闻标题、摘要、内容、发布时间等。绕过反爬虫机制:使用代理、设置请求头、模拟浏览器行为等策略绕过反爬虫技术。数据存储与清洗:将抓取的数据保存到本地文件或数据库中,并进行清洗,确保数据的可用性。在抓取过程中,我们还会面对很多实际问题,比如反爬虫技术、分页抓取、动态加载的内容等。接下来,我们将逐步介绍如何使用不同技术抓取静态和动态网页,并对抓取的内容进行处理。Scrapy。

2201_76125261的博客 2130

[Pyhon疫情大数据分析] 三.新闻信息抓取及词云可视化、文本聚类和LDA主题模型文本挖掘

Python大数据分析系列博客包括网络爬虫、可视化分析、GIS地图显示、情感分析、舆情分析、主题挖掘、威胁情报溯源、知识图谱、预测预警及AI和NLP应用等。这篇文章将爬取疫情相关的新闻数据,接着进行中文分词处理及文本聚类、LDA主题模型分析。希望这篇可视化分析文章对您有所帮助,一起加油,战胜疫情!

杨秀璋的专栏 3万+

百度新闻后台逻辑流程分析

   /*版权声明:可以任意转载,转载时请务必标明文章原始出处和作者信息 .*/                百度新闻后台逻辑流程分析             CopyMiddle:张俊林            TimeStamp:2008年1月9日     今天分析了一下百度新闻,琢磨了一下其后台运行机制,出乎意料的是,我发现其运行机制比我想象的要简单,我原先没仔细

张俊林的博客 1万+

Python爬虫实战:舆情语料项目 - 从新闻抓取到文本挖掘的完整实战(附CSV导出 + SQLite持久化存储)!

我长期专注 Python 爬虫工程化实战,主理专栏 《Python爬虫实战》:从采集策略到反爬对抗,从数据清洗到分布式调度,持续输出可复用的方法论与可落地案例。内容主打一个“能跑、能用、能扩展”,让数据价值真正做到——抓得到、洗得净、用得上。

喵手的博客 965

自动抓取163新闻的Python爬虫源码

Python爬虫的学习,自动抓取163新闻的Python爬虫源码,这是一个用Python语言编写的,自动抓取网易新闻的python爬虫实现方法一文。 Python爬虫的抓取思路是:(1)通过分析目标新闻网址 ,分析其中以News.xxx.com 开头的链接(2)获取每一个链接的内容,并做整理合并到事前准备好的.txt 文本中,以便查看各新闻。但是需要注意的是:由于今天的测试对象,网易新闻...

weixin_30292843的博客 206

Python爬虫与自动化新闻分类:从数据抓取到分类模型的构建与优化

新闻分类是指将新闻内容根据其主题、类别或领域进行自动化的分类。新闻分类的目的是将大量的新闻内容按照不同的标准(如政治、经济、体育、科技等)分成若干类别,从而使得用户能够更加高效地获取自己感兴趣的新闻信息。主题分类:如政治、经济、文化、科技、体育等。情感分类:如积极、消极、中立等情感倾向。地域分类:如国内新闻、国际新闻等。本文展示了如何使用Python进行新闻数据的抓取与自动化分类,详细介绍了从数据抓取、文本预处理、分类模型训练到评估与优化的完整流程。

2201_76125261的博客 652

Python 新闻抓取工具实战——newscatcher

在数字化的今天,获取和处理大量新闻数据变得越来越重要,而Python作为编程语言界的一股清流,在数据抓取和处理方面有着不可忽视的地位。本章将为你介绍一个高效、易于使用的Python新闻抓取工具——newscatcher。newscatcher由Python开发,专门设计用来从各种新闻网站中抓取最新新闻,并提供配置以实现定制化抓取。用户可以基于特定网站的需求,通过配置文件自定义请求参数,如User-Agent、Cookies、或任何其他需要的HTTP头部字段。

weixin_35006125的博客 1013

利用BeautifulSoup抓取新浪网页新闻的内容

第一次写的小爬虫,python确实功能很强大,二十来行的代码抓取内容并存储为一个txt文本 直接上代码 #coding = 'utf-8' import requests from bs4 import BeautifulSoup import sys reload(sys) sys.setdefaultencoding("utf-8") #抓取web页面 url =...

weixin_30501857的博客 335

textcatch 1.6:快速文本提取的直接使用体验

本文还有配套的精品资源,点击获取 简介:textcatch是一款用户友好的文本抓取工具,适用于快速从各种文本数据源中提取信息,包括网页和文档。1.6版本带来直观的用户界面、多种文本抓取模式、批量处理能力、数据导出选项、智能识别和性能优化。用户能够自定义设置并获取帮助支持,提高工作效率,适用于数据分析、市场研究和内容爬虫等场景。 1. 文本抓取工具textcatch...

weixin_42497762的博客 1818

php截取新闻内容,同时提取多条新闻中的文本一例

同时提取多条新闻中的文本一例更新时间:2006年10月09日 00:00:00 作者:本文为一个提取一批新闻网页中的文本的小程序,它可以将各篇新闻的内容存为以该新闻标题为文件名的文本文件。如有更好的处理方法,请和我联系:lwx3069@sina.com这里以人民网中的“今日要闻”下的新闻为例.($url) ? "" : $url = "http://www.unn.com.cn/GB/chan...

weixin_42138780的博客 131

Abaqus仿真突然中断?手把手教你解决SIGTERM/SIGINT报错(附完整命令行方案)

本文深入解析Abaqus仿真中因SIGTERM或SIGINT信号导致进程意外中断的根本原因,并提供了一套完整的命令行解决方案。通过将作业提交方式从图形界面切换到命令行,并配合关键参数设置,可以有效避免因会话空闲超时或外部干扰引发的计算中断,保障长时间仿真任务的稳定运行。

devops8pract的博客 745

Materials Studio与LAMMPS联合作战:如何用msi2lmp.exe完美转换聚合物模型(含PCFF力场配置)

本文详细解析了如何利用msi2lmp.exe工具将Materials Studio中的聚合物模型高效、准确地转换为LAMMPS可识别的data文件,并重点配置PCFF力场。文章提供了从MS模型构建、文件导出到命令行转换、参数调整及转换后验证的全流程实战指南与避坑技巧,旨在帮助研究者解决模型转换中的常见问题,实现跨平台分子动力学模拟的无缝衔接。

weixin_29228781的博客 519

项目4:新闻聚合-Python基础教程

项目4:新闻聚合-Python基础教程 from nntplib import NNTP, decode_header from urllib.request import urlopen import textwrap import re class Newsagent: “”" 可将新闻源中的新闻分发到新闻目的地的对象 “”" def __init__(self): self.sour...

weixin_44059220的博客 357

DICOM三维重建:基于VTK实现三种面绘制算法

版本:VS2019、VTK9.0.1 #define vtkRenderingCore_AUTOINIT 3(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingOpenGL2) #define vtkRenderingVolume_AUTOINIT 1(vtkRenderingVolumeOpenGL2) #include "vtkDICOMImageReader.h" #include "vtkRenderWindowInteractor.h" #i

一直在笑的博客 5921

获取全部校园新闻

1.取出一个新闻列表页的全部新闻 包装成函数。 2.获取总的新闻篇数,算出新闻总页数。 3.获取全部新闻列表页的全部新闻详情。 # -*- coding : UTF-8 -*- # -*- author : Kamchuen -*- import requests import re url = "http://news.gzcc.cn/html/xiaoyuanx...

anpeng3610的博客 156

STM32硬件SPI调试ADS1256的3个致命坑,CubeMX配置避坑指南

本文深入解析STM32硬件SPI调试ADS1256高精度ADC芯片时常见的3大配置陷阱,包括SPI时钟频率、时钟极性与相位、数据字节序等关键问题。通过CubeMX实战配置指南和实测数据对比,提供稳定可靠的解决方案,帮助开发者避免常见错误,提升采样精度和系统稳定性。

weixin_42550597的博客 346

PS/Ai/PR/AE等adobe出现正版弹窗提示:Your non-genuine Adobe app will be disabled soon解决办法

就是用专门的清理工具下载,清理工具在文章下方。然后新建三个空的记事本文件,重命名为 Adobe Genuine Launcher.exe,AdobeGCClient.exe,AGMService.exe。在该文件目录中,分别找到 Adobe Genuine Launcher.exe,AdobeGCClient.exe,AGMService.exe,然后在防火墙入站规则里,阻止Adobe Genuine Launcher.exe,AdobeGCClient.exe,AGMService.exe。

Q82556499的博客 1万+

23章 新闻汇总

今日练习Python基础教程第23章项目4:新闻汇总 运行顺利,代码如下: from nntplib import NNTP,decode_header from urllib.request import urlopen import textwrap import re class NewsAgent: """ 可将新闻源中的新闻发布到新闻目的地的对象 """ def __init__(self): self.sources = []

u012477117的专栏 370

04-协议基础03:USB 2.0信号与电气特性

USB 2.0使用两根差分信号线D+/D-进行数据传输,支持低速(1.5Mbps)、全速(12Mbps)和高速(480Mbps)三种速率。USB总线为主从模式,所有事务由Host发起。端电阻值作用HostRpd(D+)15KΩ±5%下拉,默认低电平HostRpd(D-)15KΩ±5%下拉,默认低电平全速设备Rpu(D+)1.5KΩ±5%上拉到3.3V,标识全速低速设备Rpu(D-)1.5KΩ±5%上拉到3.3V,标识低速USB 2.0硬件要点。

内核笔记 102
上一篇: chromedriver 各个版本下载
下一篇: elasticsearch python 链接
会发paper的学渣
博客等级 码龄15年 171粉丝 207原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会发paper的学渣

您的鼓励和将是我前进的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值