抓取网页新闻(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报框架:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线