python 爬虫 新闻_python爬虫源代码最全

python 爬虫 新闻_python爬虫源代码最全前言本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理

e1903a560fa5fc9e1a2b4f507b9c8581.png

前言

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

刚接触Python的新手、小白,可以复制下面的链接去观看Python的基础入门教学视频

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

基本开发环境

Python 3.6

Pycharm

import parsel

import requests

import re

目标网页分析

c43a96ffaeb0b80df237e80434d0b717.png

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

47393f4db05bdd5f4f52df03c182ed4e.png

点击显示更多新闻内容

04d967ab0acdb5dcab931635ca3a9c3e.png

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

如何提取url地址

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

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

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

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

718a515899ac0a8d4801c6ed476c60ac.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)

运行效果图

26fdaf69766236e6de1ba6dab30b6147.png

daf3dca881b3bb7fcf88943f6d1e674c.png

3e2bf67ed92cbdffb9b66e456eb2d617.png

今天的文章python 爬虫 新闻_python爬虫源代码最全分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/67106.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注