python爬取网页新闻_Python爬取新闻网数据

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

基本开发环境

Python 3.6

Pycharm

import parsel

import requests

import re

目标网页分析

今天就爬取新闻网中的国际新闻栏目

点击显示更多新闻内容

可以看到相关的数据接口,里面有新闻标题以及新闻详情的url地址

如何提取url地址

1、转成json,键值对取值;

2、用正则表达式匹配url地址;

两种方法都可以实现,看个人喜好

根据接口数据链接中的pager 变化进行翻页,其对应的就是页码。

详情页可以看到新闻内容都是在 div标签里面 p 标签内,按照正常的解析网站即可获取新闻内容。

保存方式

1、你可以保存txt文本形式

2、也可以保存成PDF形式

之前也讲过关于爬取文章内容保存成 PDF ,可以点击下方链接查看相关保存方式。

本篇文章的话,就使用保存txt文本的形式吧。

整体爬取思路总结

在栏目列表页中,点击更多新闻内容,获取接口数据url

接口数据url中返回的数据内容中匹配新闻详情页url

使用常规解析网站操作(re、css、xpath)提取新闻内容

保存数据

代码实现

获取网页源代码

def get_html(html_url):

"""

获取网页源代码 response

:param html_url: 网页url地址

:return: 网页源代码

"""

response = requests.get(url=html_url, headers=headers)

return response

获取每篇新闻url地址

def get_page_url(html_data):

"""

获取每篇新闻url地址

:param html_data: response.text

:return: 每篇新闻的url地址

"""

page_url_list = re.findall('"url":"(.*?)"', html_data)

return page_url_list

文件保存命名不能含有特殊字符,需要对新闻标题进行处理

def file_name(name):

"""

文件命名不能携带 特殊字符

:param name: 新闻标题

:return: 无特殊字符的标题

"""

replace = re.compile(r'[\\\/\:\*\?\"\\|]')

new_name = re.sub(replace, '_', name)

return new_name

保存数据

def download(content, title):

"""

with open 保存新闻内容 txt

:param content: 新闻内容

:param title: 新闻标题

:return:

"""

path = '新闻\\' + title + '.txt'

with open(path, mode='a', encoding='utf-8') as f:

f.write(content)

print('正在保存', title)

主函数

def main(url):

"""

主函数

:param url: 新闻列表页 url地址

:return:

"""

html_data = get_html(url).text # 获得接口数据response.text

lis = get_page_url(html_data) # 获得新闻url地址列表

for li in lis:

page_data = get_html(li).content.decode('utf-8', 'ignore') # 新闻详情页 response.text

selector = parsel.Selector(page_data)

title = re.findall('

(.*?)', page_data, re.S)[0] # 获取新闻标题

new_title = file_name(title)

new_data = selector.css('#cont_1_1_2 div.left_zw p::text').getall()

content = ''.join(new_data)

download(content, new_title)

if __name__ == '__main__':

for page in range(1, 101):

url_1 = 'https://channel.chinanews.com/cns/cjs/gj.shtml?pager={}&pagenum=9&t=5_58'.format(page)

main(url_1)

运行效果图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489139.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谷歌新智能体Dreamer将亮相NeurIPS 2019,数据效率比前身PlaNet快8个小时

来源:雷锋网在具有挑战性的环境中,一些人工智能系统通过利用过去经验所提供的世界表象来实现目标。研究人员将这些应用推广到新的情况,使它们能够在以前从未遇到过的环境中完成任务。事实证明,强化学习——一种使用奖励来推动软件…

Highcharts属性与Y轴数据值刻度显示Y轴最小最大值

Highcharts 官网:https://www.hcharts.cn/demo/highcharts Highcharts API文档:https://api.hcharts.cn/highcharts#yAxis.tickmarkPlacement Highcharts属性与Y轴数据值刻度显示Y轴最小最大值 Highcharts.setOptions({global:{useUTC : false}}); $(f…

mysql 游标总条数_mysql 游标的使用总结

一、游标的基本概念游标:游标是一个存储在Mysql服务器上的数据库查询,它不是一条select语句,而是被该语句检索出来的结果集。本人,学习游标中,曾遇到一个问题,循环总是最后多执行一次。下面分析程序&#x…

AR行业成本拆解解析

来源:三极光电科技一、AR 产业简介(一)AR 定义AR 技术(AugmentedReality,AR)是借助光电显示技术、交互技术、多种传感技术和计算机图形与多媒体技术将计算机生成的虚拟环境与用户周围的真实环境融为一体&am…

python语言处理excel_Python语言操作excel

本文主要向大家介绍了Python语言操作excel,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。#!/usr/bin/env python#coding: utf-8import xlsxwriterworkbook xlsxwriter.Workbook(demo1.xlsx)worksheet workbook.add_worksheet()workshe…

MySQL索引的索引长度问题

转自:http://samyubw.blog.51cto.com/978243/223773 MySQL的每个单表中所创建的索引长度是有限制的,且对不同存储引擎下的表有不同的限制。  在MyISAM表中,创建组合索引时,创建的索引长度不能超过1000,注意这里索引的长度的计算…

怎么查询mysql的语法_mysql查询语法

-- 基本查询-- 查询所有字段-- select * from 表名;select * from students;select * from classes;-- 查询指定字段-- select 列1,列2,... from 表名;select name, gender from students;-- 使用 as 给字段起别名-- select 字段 as 名字.... from 表名;select name as 名字, g…

mimo雷达信号处理_雷达学术入门脉冲雷达信号处理概述

Reviewed by :甜草莓 Robert Zhou;前置知识:概率论与统计学。面向人群:本科生、研究生/信号处理博士。 编者:对于信号处理来说,雷达和通信一直是一体两面,从MIMO通信到MIMO雷达,从OF…

人类历史十大经典物理实验,有些实验就在你身边为何你没注意到?

来源:数学职业家实验是科学研究的基本方法之一,也是人类认识自然现象、自然性质、自然规律的途径。现代实验技术的发展,不断地揭示和发现各种新的物理现象,日益加深人们对客观世界规律的正确认识,从而推动物理学的向前…

一、linux搭建jenkins+github详细步骤

事情缘由: 现在在做的主要工作是通过jenkinspostman实现api的自动化测试,想要达到的效果是,api自动化测试定时跑脚本的同时,github有新的代码提交,jenkins会自动检测部署新提交的代码,并且再次将api自动化脚…

matlab插值与拟合例题_MATLAB中数据插值和数据拟合的用法

一、数据插值:插值是在一组已知数据点的范围内添加新数据点的技术。可以使用插值来填充缺失的数据、对现有数据进行平滑处理以及进行预测等。MATLAB 中的插值技术可分为适用于网格上的数据点和散点数据点。从数学上来说,数据插值是一种函数逼近的方法。数…

python中with的用法_python 中 with的用法

with 语句使用于对资源进行访问的场合,确保不管使用过程是否发生异常都会执行必要的"清理"操作,释放资源,比如文件使用后自动关闭/线程中锁的自动获取和释放with open("1.txt") as file:data file.read()使用with,能够减少冗长,还能自动处理上…

半导体行业深度报告:从应用到行业的全面复苏

来源:国金证券一、2020-2021年全球半导体市场投资展望多种因素导致全球半导体市场于 2019 年同比下跌近 13%到 4,102 亿美元,而存储器行业同比下跌超过 30%,逻辑半导体同比下跌近 2%。存储器市场占全球半导体市场达到近三年低点的 27%。但受惠…

ES6精华: 解构运算符 扩展运算符 剩余运算符

http://www.tuicool.com/articles/26bAzmm转载于:https://www.cnblogs.com/xuezizhenchengxuyuan/p/6378382.html

mysql 8 修改root密码忘记_忘记mysql8或者mariadb5及以上 的root密码如何更改

实验环境操作系统:lsb_release -aNo LSB modules are available.Distributor ID:UbuntuDescription:Ubuntu 20.04.1 LTSRelease:20.04Codename:focalmysql数据库版本:mysql基本信息具体步骤1. 停止mysql (sudo service mysqld stop 或者 kill -TERM mysq…

配置tomcat_Tomcat 配置必备的 10 个小技巧,让你轻松玩转Tomcat

现在开发Java Web应用,建立和部署Web内容是一件很简单的工作。使用Jakarta Tomcat作为Servlet和JSP容器的人已经遍及全世界。Tomcat具有免费、跨平台等诸多特性,并且更新得很快,现在非常的流行。你所需要做的就是:按照你的需求配置…

卫星移动通信现状与未来发展

来源:电子万花筒摘要:卫星移动通信系统具有覆盖范围广,对地面情况不敏感等优势,已经成为地面移动通信领域重要的组成部分,尤其是在空中、海洋、荒漠戈壁等地面无线网络难以覆盖的地方。随着科学技术的不断进步&#xf…

【SpringCloud】Netflix源码解析之Ribbon:负载均衡策略的定义和实现

Ribbon负载均衡策略定义 IRule其实就只做了一件事情Server choose(Object key),可以看到这个功能是在LB中定义(要求)的,LB把这个功能委托给IRule来实现。不同的IRule可以向LB提供不同的负载均衡算法。 public interface IRule{ pu…

mysql load data infile 重写_mysql load data infile 命令的数据导入

文章介绍了mysql load data infile 命令的数据导入,该方式比直接的insert的效率要高,按照官方的说法是要比insert语句快上20倍,有需要的朋友可参考。使用方式如下:代码如下复制代码mysql>load data local infile "D:/ab.txt" in…

DARPA发布战略框架文件旨在 为美国国家安全创建突破性新技术能力

来源:ARPA网站/图片来自互联网12月4日,DARPA公开了于今年8月份完成的2019年度战略框架文件《面向国家安全创建技术突破和新能力》,阐述了该机构面临的威胁环境,并提出了未来几年的发展计划。1应关注的重点该框架文件指出&#xff…