抓取网页新闻(Pythonnewspaper框架是什么?如何使用newspaper第三方库直接爬取)
优采云 发布时间: 2022-04-02 19:03抓取网页新闻(Pythonnewspaper框架是什么?如何使用newspaper第三方库直接爬取)
文章目录
前言
有各种各样的网络爬虫方法。今天做点简单的,直接用报纸的第三方库爬取。当然,也存在一些问题。毕竟每条新闻网站的结果都略有不同,所以取其精华。它的渣滓!用报纸库来获取标题和文字很方便,但是要跳转到下一篇,我们还是老老实实用xpath提取吧。
一、什么是报纸框架?
Newspaper 框架是 Python 爬虫框架中 GitHub 上最受欢迎的爬虫框架,适用于爬取新闻网页。它的操作非常简单易学,即使对于完全没有爬虫知识的初学者也非常友好。简单学习很容易上手,因为不需要考虑header,IP代理,或者网页解析,网页源代码。架构等。这是它的优点,也是它的缺点,忽略这些会导致访问网页时直接被拒绝的可能性。总的来说,Newspaper框架不适合实际工程新闻信息爬取工作,框架不稳定,在爬取过程中会出现各种bug,比如无法获取url、新闻信息等,
二、使用步骤1.导入库
import time
import requests #获取整个网页
from lxml import etree #获取下一个新闻地址
from newspaper import Article #第三方newspaper库爬取网页信心
安装
pip3 install newspaper3k
pip3 install requests
pip3 install lxml
2.报刊图书馆使用
def get_html(url):
html = Article(url,language='zh')
html.download() #爬取网页
html.parse() #分析网页
text = html.text.split() #去掉多余的空格及其他杂项
content = ''
for i in text[1:]:
content = content + i #遍历到字符串中输出
data = html.title + '\n'+'\n' + content
print('爬取数据成功!')
return data
3.获取下一条新闻的链接
def get_next_url(url):
headers = {
'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.60'
}
r = requests.get(url,headers=headers)
r.raise_for_status() #获取失败给出错误码
r.encoding = 'utf-8'
html = etree.HTML(r.text) #etree分析网页
index_url = 'https://news.sise.edu.cn/'
next_url = index_url + html.xpath("//li[@class='previous']/a/@href")[0]
return next_url
三、完整代码
import time
import requests #获取整个网页
from lxml import etree #获取下一页地址
from newspaper import Article #第三方newspaper库爬取网页信心
# 获取下一个链接
def get_next_url(url):
headers = {
'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.60'
}
r = requests.get(url,headers=headers)
r.raise_for_status()
r.encoding = 'utf-8'
html = etree.HTML(r.text) #etree分析网页
index_url = 'https://news.sise.edu.cn/'
next_url = index_url + html.xpath("//li[@class='previous']/a/@href")[0]
return next_url
def get_html(url):
html = Article(url,language='zh')
html.download() #爬取网页
html.parse() #分析网页
text = html.text.split() #去掉多余的空格及其他杂项
content = ''
for i in text[1:]:
content = content + i #遍历到字符串中输出
data = html.title + '\n'+'\n' + content
print('爬取数据成功!')
return data
# 保存到txt文件中
def to_txt(data,name):
with open('D:\\python\\hr_news\\txt\\'+name,'w',encoding='utf-8') as f:
f.write(data)
if __name__ == "__main__":
url = 'https://news.sise.edu.cn/cms/7247.html' # 新闻网要闻的第一个新闻地址
data = get_html(url)
next_url = get_next_url(url)
# 爬取50个,并重命名txt文件
for i in range(50):
if i 0:
data = get_html(next_url)
next_url = get_next_url(next_url)
else:
print("到底了")
四、参考
Python新闻内容爬虫专用包报详细教程:
Python报框架: