python 制作自己的新闻_用Python制作一个每日新闻热点爬虫脚本

序言

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

刚触碰Python的初学者、新手,能够拷贝下边的连接去收看Python的基本新手入门视频教学

https://v.douyu.com/author/y6AZ4jn9jwKW

基础开发工具

Python 3.6

Pycharm

import parsel

import requests

import re

总体目标网页分析

bbfc30d90e9aa3208afef015fa7af109.png

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

c365c4dd94d9caf3014e82abd50b7a42.png

点一下显示信息大量新闻内容

2b3fba149ef144c51fa6728fff9e0f44.png

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

如何提取url地址

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

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

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

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

420ac963a2c5833011ae7a6688899e47.png

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

储存方法

1、你能储存txt文本方式

2、还可以储存成PDF方式

总体抓取构思汇总

在频道目录页中,点一下大量新闻内容,获得插口数据信息url

插口数据信息url中回到的数据信息內容中搭配新闻报道宝贝详情url

应用基本解析网站实际操作(re、css、xpath)获取新闻内容

储存数据信息

编码完成

获得网页源代码

defget_html(html_url):"""获得网页源代码 response

:param html_url: 网页页面url地址

:return: 网页源代码"""response= requests.get(url=html_url, headers=headers)return response

获得每章新闻报道url地址

defget_page_url(html_data):"""获得每章新闻报道url地址

:param html_data: response.text

:return: 每章新闻报道的url地址"""page_url_list= re.findall('"url":"(.*?)"', html_data)return page_url_list

文档储存取名不可以带有特殊符号,必须对文章标题开展解决

deffile_name(name):"""文件命名不可以带上 特殊符号

:param name: 文章标题

:return: 无特殊符号的题目"""replace= re.compile(r'[\\\/\:\*\?\"\\|]')

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

储存数据信息

defdownload(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)

主函数

defmain(url):"""主函数

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

:return:"""html_data= get_html(url).text #得到 插口数据信息response.text

lis = get_page_url(html_data) #得到 新闻报道url地址目录

for li inlis:

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)

运作设计效果图

2a485086634433df3b1912079fece483.png

26edd2085a1aae29c03b5786d52b7262.png

fa4794621fb0b7d47e8648af072cd554.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值