python爬虫代码新闻_Python 教你 4 行代码开发新闻网站通用爬虫

GNE是一个强大的通用新闻抽取模块,能从各种新闻网站中准确提取标题、作者、发布时间、正文和图片。它支持与Selenium或Pyppeteer结合使用,以处理经过JavaScript渲染的HTML。GNE提供了配置选项,如自定义标题XPath、处理噪声节点和转换图片为绝对路径。尽管不支持翻页和非新闻类网站,但其在众多中文新闻站点上的准确率高达100%。
摘要由CSDN通过智能技术生成

\

0f9f97671dfa29a562d01b63ee0036854d6.jpg3315383

GNE(GeneralNewsExtractor)是一个通用新闻网站正文抽取模块,输入一篇新闻网页的 HTML, 输出正文内容、标题、作者、发布时间、正文中的图片地址和正文所在的标签源代码。GNE在提取今日头条、网易新闻、游民星空、 观察者网、凤凰网、腾讯新闻、ReadHub、新浪新闻等数百个中文新闻网站上效果非常出色,几乎能够达到100%的准确率。

b27f7b4db1f0865362862353b9cc8cfc9f1.png

使用方式非常简单:

from gne import GeneralNewsExtractor

extractor = GeneralNewsExtractor()

html = '网站源代码'

result = extractor.extract(html)

print(result)

3315383

GNE 的输入是经过 js 渲染以后的 HTML 代码,所以 GNE 可以配合Selenium 或者 Pyppeteer 使用。

下图是 GNE 配合 Selenium 实现的一个 Demo:

7dae8344b16c3d08e5004bf50caa4e916e9.jpg3315383

对应的代码为:

import time

from gne import GeneralNewsExtractor

from selenium.webdriver import Chrome

driver = Chrome('./chromedriver')

driver.get('https://www.toutiao.com/a6766986211736158727/')

time.sleep(3)

extractor = GeneralNewsExtractor()

result = extractor.extract(driver.page_source)

print(result)

3315383

下图是 GNE 配合 Pyppeteer 实现的 Demo:

ec238821d9832e0a850c6ecbfa2b235af20.jpg3315383

对应代码如下:

import asyncio

from gne import GeneralNewsExtractor

from pyppeteer import launch

async def main():

browser = await launch(executablePath='/Applications/Google Chrome.app/Contents/MacOS/Google Chrome')

page = await browser.newPage()

await page.goto('https://news.163.com/20/0101/17/F1QS286R000187R2.html')

extractor = GeneralNewsExtractor()

result = extractor.extract(await page.content())

print(result)

input('检查完成以后回到这里按下任意键')

asyncio.run(main())

3315383

如何安装 GNE

现在你可以直接使用 pip 安装 GNE 了:

pip install gne

3315383

如果访问pypi 官方源太慢,你也可以使用网易源:

pip install gne -i https://mirrors.163.com/pypi/simple/

3315383

安装过程如下图所示:

dba0804621d13ea7c51db5244f1f0b76838.jpg3315383

功能特性

获取正文源代码

在extract()方法只传入网页源代码,不添加任何额外参数时,GNE 返回如下字段:

title:新闻标题

publish_time:新闻发布时间

author:新闻作者

content:新闻正文

images: 正文中的图片(相对路径或者绝对路径)

可能有些朋友希望获取新闻正文所在标签的源代码,此时可以给extract()方法传入with_body_html参数,设置为 True:

extractor = GeneralNewsExtractor()

extractor.extract(html, with_body_html=True)

3315383

返回数据中将会增加一个字段body_html,它的值就是正文对应的 HTML 源代码。

运行效果如下图所示:

eefb96daf5dc5a2a7a2cfd4f48921bcb2e7.jpg3315383

总是返回图片的绝对路径

默认情况下,如果新闻中的图片使用的是相对路径,那么 GNE 返回的images字段对应的值也是图片相对路径的列表。

如果你想始终让 GNE 返回绝对路径,那么你可以给extract()方法增加host参数,这个参数的值是图片的域名,例如:

extractor = GeneralNewsExtractor()

extractor.extract(html, host='https://www.kingname.info')

3315383

这样,如果新闻中的图片是/images/pic.png,那么 GNE 返回时会自动把它变为https://www.kingname.info/images/pic.png。

指定新闻标题所在的 XPath

GNE 预定义了一组 XPath 和正则表达式用于提取新闻的标题。但某些特殊的新闻网站可能无法提取标题,此时,你可以给extract()方法指定title_xpath参数,用于提取新闻标题:

extractor = GeneralNewsExtractor()

extractor.extract(html, title_xpath='//title/text()')

3315383

提前移除噪声标签

某些新闻下面可能会存在长篇大论的评论,这些评论看起来比新闻正文“更像”正文,为了防止他们干扰新闻的提取,可以通过给extract()方法传入noise_node_list参数,提前把这些噪声节点移除。noise_node_list的值是一个列表,里面是一个或多个 XPath:

extractor = GeneralNewsExtractor()

extractor.extract(html, noise_node_list=['//div[@class="comment-list"]', '//*[@style="display:none"]'])

3315383

使用配置文件

API 中的参数 title_xpath、 host、 noise_node_list、 with_body_html除了直接写到 extract() 方法中外,还可以通过一个配置文件来设置。

请在项目的根目录创建一个文件 .gne,配置文件可以用 YAML 格式,也可以使用 JSON 格式。

YAML 格式配置文件

title:

xpath: //title/text()

host: https://www.xxx.com

noise_node_list:

- //div[@class=\"comment-list\"]

- //*[@style=\"display:none\"]

with_body_html: true

3315383

JSON 格式配置文件

{

"title": {

"xpath": "//title/text()"

},

"host": "https://www.xxx.com",

"noise_node_list": ["//div[@class=\"comment-list\"]",

"//*[@style=\"display:none\"]"],

"with_body_html": true

}

3315383

这两种写法是完全等价的。

配置文件与 extract() 方法的参数一样,并不是所有字段都需要提供。你可以组合填写你需要的字段。

如果一个参数,既在 extract() 方法中,又在 .gne 配置文件中,但值不一样,那么 extract() 方法中的这个参数的优先级更高。

FAQ

GeneralNewsExtractor(以下简称GNE)是爬虫吗?

GNE不是爬虫,它的项目名称General News Extractor表示通用新闻抽取器。它的输入是HTML,输出是一个包含新闻标题,新闻正文,作者,发布时间的字典。你需要自行设法获取目标网页的HTML。

GNE 现在不会,将来也不会提供请求网页的功能。

GNE支持翻页吗?

GNE不支持翻页。因为GNE不会提供网页请求的功能,所以你需要自行获取每一页的HTML,并分别传递给GNE。

GNE支持哪些版本的Python?

不小于Python 3.6.0

我用requests/Scrapy获取的HTML传入GNE,为什么不能提取正文?

GNE是基于HTML来提取正文的,所以传入的HTML一定要是经过JavaScript渲染以后的HTML。而requests和Scrapy获取的只是JavaScript渲染之前的源代码,所以无法正确提取。

另外,有一些网页,例如今日头条,它的新闻正文实际上是以JSON格式直接写在网页源代码的,当页面在浏览器上面打开的时候,JavaScript把源代码里面的正文解析为HTML。这种情况下,你在Chrome上面就看不到Ajax请求。

所以建议你使用Puppeteer/Pyppeteer/Selenium之类的工具获取经过渲染的HTML再传入GNE。

GNE 支持非新闻类网站吗(例如博客、论坛……)

不支持。

关于 GNE

GNE 官方文档:https://generalnewsextractor.readthedocs.io/

GNE 的项目源代码在:https://github.com/kingname/GeneralNewsExtractor。

weixin_39631017
关注 关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GNE: 4代码实现新闻类网站通用爬虫
GitChat
01-03 942
GNE(GeneralNewsExtractor)是一个通用新闻网站正文抽取模块,输入一篇新闻网页的 HTML, 输出正文内容、标题、作者、发布时间、正文中的图片地址和正文所在的标签源代码。GNE在提取今日头条、网易新闻、游民星空、 观察者网、凤凰网、腾讯新闻、ReadHub、新浪新闻等数百个中文新闻网站上效果非常出色,几乎能够达到100%的准确率。...
python爬虫代码新闻_Python爬虫实战项目:简单的爬取某度新闻
weixin_39622398的博客
11-23 210
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理以下文章来源于腾讯云 作者:一墨编程学习( 想要学习PythonPython学习交流群:1039649593,满足你的需求,资料都已经上传群文件流,可以自下载!还有海量最新2020python学习资料。 )这个实战例子是构建一个大规模的异步新闻爬虫,但要分几步走,从简单到复杂,循...
小伙Python爬虫并自制新闻网站,太好玩了
数据森麟
09-13 1675
公众号后台回复“图书“,了解更多号主新书内容作者:豆腐来源:凹凸数据大家好,我又来了,我是银牌厨师豆腐!我们总是在爬啊爬,爬到了数据难道只是为了做一个词云吗?当然不!这次我就利用flas...
新闻网页代码
qq_66540630的博客
01-21 2986
1.首先先建立一个新的页面 2.根据标签分割线和文字,将对应的代码打入进去 这样一个大概的结构框架就出来了 3.根据要求,修改代码得到所需的文字,字体和结构 4.得到最终的效果,打开网页 ...
新闻发布网站源码20130402
05-14
新闻发布网站源码 功能介绍: 前台页面:新闻列表 新闻详细 后台页面:添加新闻 新闻管理
python通用爬虫代码(超简易版)
05-29
配合我的程学习,只需要修改通用爬虫代码中的url和xpath路径,即可快速生成别的网站的python爬虫代码。十分适合新手小白练手用
爬虫开发Python实例代码.zip
04-07
爬虫开发Python实例代码.zip爬虫开发Python实例代码.zip爬虫开发Python实例代码.zip爬虫开发Python实例代码.zip爬虫开发Python实例代码.zip爬虫开发Python实例代码.zip爬虫开发Python实例代码.zip爬虫开发Python实例...
爬虫开发Python3网络爬虫开发实战代码
最新发布
04-20
爬虫开发】《Python3网络爬虫开发实战代码》 说明:《Python3网络爬虫开发实战代码》---->mitmtest (Practical code for development of Python 3 web crawler) 【爬虫开发】《Python3网络爬虫开发实战代码》文件...
81个Python爬虫代码
12-13
81个Python爬虫代码,内容包含新闻、视频、中介、招聘、图片资源等网站的爬虫资源
爬虫开发Python开发简单爬虫 实例代码.zip
04-07
爬虫开发Python开发简单爬虫 实例代码.zip爬虫开发Python开发简单爬虫 实例代码.zip爬虫开发Python开发简单爬虫 实例代码.zip爬虫开发Python开发简单爬虫 实例代码.zip爬虫开发Python开发简单爬虫 实例代码.zip爬虫...
新闻发布网站源码2012811
08-11
新闻发布网站源码 功能介绍: 一个简单的新闻发布网站,采用了三层结构设计 实现了新闻的展示,分类,评价,按条件搜索的功能
新闻代码html
02-27
新闻代码东方头条网-东方网旗下《东方头条》是一款会自动学习的资讯软件,它会分析你的兴趣爱好,为你推荐喜欢的内容,并且越用越懂你.就要你好看,东方头条新闻
新闻发布系统源码
01-29
网站是用asp.NET完成,有些功能不完善,可以修改,不的用于商业,只做学习交流,其他不做过的要求 数据库在database文件夹中(sql2005),附加即可. 登陆用户名和密码都是51aspx 友情提示: 如果使用VS2005打开本站项目文件,建议打开前务必安装VS2005Sp1
新闻网站项目源代码
11-10
本系统是一个功能完善的新闻类网站,由客户前台新闻浏览和后台新闻管理两大部分组成。前台功能模块:前台主要包括新闻分类、新闻详细信息、新闻信息查询、新闻搜索、信息公告查询、信息导读查询及提供后台登录口等。 后台管理模块:后台主要包括后台总管理员设置及密码修改、添加管理员、管理员信息设置、新闻类型管理、信息公告管理、焦点导读管理及退出后台等。
新闻网站代码完整版
09-17
包含完整的新闻网站的功能,后台管理数据库,可现实图片新闻
Python+Django毕业设计新闻类网站(程序+LW+部署)
Python、JAVA毕设程序源码
01-04 418
项目运环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:SSM + mybatis + Maven + Vue 等等组成,B/S模式 + Maven管理等等。环境需要1.运环境:最好是java jdk 1.8,我们在这个平台上运的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。
新闻发布网站代码_如何把新闻稿发布到门户网站上?上海专业代发新闻稿公司...
weixin_39740419的博客
11-24 239
什么是软文营销?简单来说,就是把一篇关于您企业的宣传文章,新闻,会议活动,或者一个新的观点,或者是一篇可以引起读者共鸣的文章发布多家不同新闻媒体上,用户就可以在媒体上,或者从搜索引擎关键字搜索看到相关文章,从而产生广告效果,这就是网络软文营销。企业为什么要做软文营销推广?互联网已成为消费者了解完整品牌新的的主要通道。你的企业是否正在经历以下几个痛点企业品牌不够知名,客户缺乏信任感。尝试过多种推广,...
新闻发布系统源码(代码简单)
06-11
新闻发布系统
新闻发布网站代码_育部发布重要通知!
weixin_39915367的博客
12-04 402
今天(8月6日)育部发布通知提醒广大考生警惕“虚假大学”近年来,经育、公安、网信部门联合打击,绝大多数以诈骗为目的的“虚假大学”已难以继续招摇撞骗,但在经济利益的诱惑下,仍有可能出现新的“虚假大学”。因此,再次提醒广大考生与家长,不要相信任何“走捷径”、“低分上名校”的谎言,在志愿填报时做到:查官网:2020年具有高考招生资格的全国高等学校名单共3005所均已在育部门户网站发布,考...
python爬虫新浪新闻_python爬虫之获取新浪新闻信息
06-08
好的,你想了解如何使用 Python 爬虫获取新浪新闻信息。这个问题可以分为以下几个步骤: 1. 发送网络请求获取网页源代码 2. 解析网页源代码,提取新闻信息 3. 保存提取的新闻信息 下面我会详细介绍每个步骤的实现方法。 1. 发送网络请求获取网页源代码 我们可以使用 Python 的 requests 库来发送网络请求,并使用 BeautifulSoup 库来解析网页源代码。下面是一个简单的示例代码: ```python import requests from bs4 import BeautifulSoup url = 'https://news.sina.com.cn/' response = requests.get(url) html = response.text soup = BeautifulSoup(html, 'html.parser') ``` 这段代码首先使用 requests 库发送了一个 GET 请求,获取了新浪新闻的首页源代码。然后使用 BeautifulSoup 库解析了这个源代码。 2. 解析网页源代码,提取新闻信息 在解析网页源代码之前,我们需要先分析一下新浪新闻的网页结构,找到我们需要提取的信息所在的位置。经过分析,我们可以发现新浪新闻的每条新闻都包含在一个 div 元素中,而这个 div 元素的类名是 news-item。因此,我们可以使用 BeautifulSoup 库提供的 find_all() 方法来查找所有类名为 news-item 的 div 元素,然后逐一解析每个 div 元素,提取出我们需要的信息,例如标题、链接、时间等。下面是一个示例代码: ```python news_list = [] for news_item in soup.find_all('div', class_='news-item'): title = news_item.find('a').text.strip() link = news_item.find('a').get('href') time = news_item.find('span', class_='time').text.strip() news = {'title': title, 'link': link, 'time': time} news_list.append(news) ``` 这段代码首先使用 find_all() 方法查找所有类名为 news-item 的 div 元素,然后逐一解析每个 div 元素,提取出标题、链接、时间等信息,并将这些信息保存到一个字典中。最后,将所有字典保存到一个列表中。 3. 保存提取的新闻信息 最后,我们可以将提取的新闻信息保存到本地文件中,以便后续使用。下面是一个示例代码: ```python import json with open('news.json', 'w', encoding='utf-8') as f: json.dump(news_list, f, ensure_ascii=False) ``` 这段代码使用了 Python 的 json 库,将提取的新闻信息保存到了 news.json 文件中。 以上就是使用 Python 爬虫获取新浪新闻信息的完整过程。当然,实际操作中还需要注意一些细节问题,例如解决反爬虫机制等。
150
原创
29
点赞
223
收藏
25
粉丝
关注
私信
写文章

热门文章

  • c语言汉字的存放和输出,怎么在C语言里用printf输出一个中文 16466
  • byte是什么类型_八大基础类型你真的懂吗? 14754
  • odf架怎么接 光端机 光缆_ODF光纤配线架光缆成端方法介绍 7892
  • DNF登陆服务器显示乱码,根本解决乱码,让你在台服打出简体字 7137
  • 计算机类sci四大水刊,官方证实:「四大水刊」之一的 ONCOTARGET 2018年起将不再被 SCI 收录,你怎么看?... 5780

最新文章

  • 修改服务器2012r2核数,windows-server-2012-r2 – 如何从PS远程会话启动服务器核心上的Windows Update?...
  • 鲲鹏系统如何上内网服务器,鲲鹏服务器怎么用
  • DNF登陆服务器显示乱码,根本解决乱码,让你在台服打出简体字
2021年154篇
2020年197篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家玻璃钢福娃雕塑江西玻璃钢仿真水果雕塑价格商场秋冬美陈扬州人物玻璃钢雕塑制作瑞安玻璃钢雕塑扬州动物玻璃钢雕塑设计河南季节性商场美陈供应古朴的玻璃钢卡通雕塑成都市玻璃钢卡通雕塑唐县玻璃钢雕塑玻璃钢鹿雕塑厂家报价昆明市玻璃钢花盆厂家杭州商场美陈报价伊春玻璃钢雕塑生产厂家浦口商场开业美陈池州户外玻璃钢雕塑市场丹阳玻璃钢雕塑厂商定制郑州玻璃钢雕塑模具厂迪庆玻璃钢雕塑生产制造贵州公园玻璃钢雕塑销售厂家江苏步行街玻璃钢雕塑批发临汾玻璃钢商场美陈金华定制玻璃钢雕塑市场河源透明玻璃钢雕塑厂家龙井道路护栏玻璃钢花盆浙江特色商场美陈市场蛟河造型玻璃钢雕塑玻璃钢雕塑与美术结合衢州玻璃钢雕塑制作厂宝山区专业玻璃钢雕塑在线咨询香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化