桓楠百科网

编程知识、经典语录与百科知识分享平台

python新手一次性爬取新闻网站的多篇文章,代码简单易懂

今天爬取的网站是每经网,一个以发布国内外经济相关类新闻为主的网站,信息来源可靠,是很多股民和期民都喜欢浏览的一个网站。

以下用python写的简单爬取新闻标题和内容的代码,思路过程是先从每经网的首页,找到当日新闻的所有网址,然后以for循环的方式遍历每一个单独新闻网址,将每一个网址内的新闻标题和内容打印出来,下面是具体的代码,感兴趣的可以试着去运行。

#导入模块
from bs4 import BeautifulSoup
import requests
import time

#使用requests模块获取网页源码
url="https://www.nbd.com.cn/columns/3/"
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36 SE 2.X MetaSr 1.0" }
res = requests.get(url,headers=headers)
res.encoding="utf-8"

#使用BeautifulSoup获取当日新闻的所有网址
soup=BeautifulSoup(res.text,'lxml')
news_main= soup.find('ul',class_='u-news-list').find_all("a")
for i in news_main:
    url_list = (i.get("href"))

#获取网页源码和解析操作,打印一篇新闻的标题和内容
    res_1 = requests.get(url_list,headers=headers)
    res_1.encoding="utf-8"
    soup_1 = BeautifulSoup(res_1.text,'lxml')
    title = soup_1.find('title')
    print(title.get_text())
    news_main_1= soup_1.find('div',class_='g-articl-text').find_all("p")
    for j in news_main_1:
        print(j.get_text())

#使用线段将每一篇新闻隔开,使用延迟函数,每下载一篇新闻停顿2.5秒
    print("----------------------------------------------------------------------")
    time.sleep(2.5)
        

这里添加量一个time模块,是python自带的,较为常用的就是延迟函数sleep()了,括号里面输入的数字代表延迟的秒数,每爬取一篇新闻就停顿2.5秒,以免被网站封禁IP。

下图是当日新闻的所有网址,赋值给了url_list

下面是输出界面,爬取成功的新闻

上面的新闻是8月26日,只属于第一网页,如果想爬更多网页,也可以通过构造for循环实现,感兴趣的可以去尝试。

值得注意的是,每经网虽然是传统的网站,反扒机制落后,但还是要控制爬取频率,严格遵守爬虫协议,以免占用服务器太多资源。

总结一下,这一节主要是展示如何一次性爬取多篇新闻的过程,灵活使用for循环,每次代码运行添加了延迟,代码简单但需要熟练运用两个基本的爬虫模块。

如果你看懂了上面的代码,可以尝试去其他新闻网站爬取来检验以下成果,最好是选比较传统的网站,基本没有反爬机制。


以上内容只作为教学展示使用,旨在演示python的运行逻辑和知识点。如果有任何侵权行为,联系后我会立即删除。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言