python爬取热门新闻

563次阅读
没有评论

序言

文中的文本及图片来自互联网,仅作学习培训、沟通交流应用,不具备一切商业行为,如有什么问题请立即在线留言以作解决。

PS:若有必须Python学习材料的小伙伴们能够加点击正下方连接自主获取

python免费学习材料及其群沟通交流解释点击就可以添加

基础开发工具

Python 3.6

Pycharm

import parsel

import requests

import re

总体目标网页分析

今日就爬取新闻中的国际要闻频道

python爬取热门新闻

点击显示信息大量新闻内容

python爬取热门新闻

能够见到有关的api接口,里边有文章标题及其新闻详情的url地址

如何提取url地址

1、转为json,键值对赋值;

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

二种方式都能够完成,看本人爱好

依据插口数据信息连接中的pager 转变开展换页,其相匹配的便是页数。

python爬取热门新闻

宝贝详情能够见到新闻内容全是在 div标识里边 p 标识内,依照一切正常的解析网站就可以获取新闻内容。

保存方法

1、你能保存txt文本方式

2、还可以保存成PDF方式

以前也讲过有关爬取文章保存成 PDF ,能够点击正下方连接查询有关保存方法。

Python爬取比比网招标投标书并保存成PDF文件格式

python爬取CSDN网络文章并制做成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)

运作设计效果图

python爬取热门新闻

python爬取热门新闻

python爬取热门新闻

神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:Python教程2022-10-28发表,共计2113字。
新手QQ群:570568346,欢迎进群讨论 Python51学习