千家信息网

结合Python网络爬虫做一个今日新闻小程序的方法教程

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要介绍"结合Python网络爬虫做一个今日新闻小程序的方法教程",在日常操作中,相信很多人在结合Python网络爬虫做一个今日新闻小程序的方法教程问题上存在疑惑,小编查阅了各式资料,整理出简
千家信息网最后更新 2025年01月18日结合Python网络爬虫做一个今日新闻小程序的方法教程

这篇文章主要介绍"结合Python网络爬虫做一个今日新闻小程序的方法教程",在日常操作中,相信很多人在结合Python网络爬虫做一个今日新闻小程序的方法教程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"结合Python网络爬虫做一个今日新闻小程序的方法教程"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

核心代码

requests.get 下载html网页
bs4.BeautifulSoup 分析html内容

from requests import getfrom bs4 import BeautifulSoup as bsfrom datetime import datetime as dt def Today(style=1):    date = dt.today()    if style!=1: return f'{date.month}月{date.day}日'    return f'{date.year}-{date.month:02}-{date.day:02}' def SinaNews(style=1):    url1 = 'http://news.***.com.cn/'    if style==1: url1 += 'world'    elif style==2: url1 += 'china'    else: url1='https://mil.news.sina.com.cn/'    text = get(url1)    text.encoding='uft-8'    soup = bs(text.text,'html.parser')    aTags = soup.find_all("a")    return [(t.text,t['href']) for t in aTags if Today() in str(t)]

爬取标题

>>> for i,news in enumerate(SinaNews(1)):
print(f'No{i+1}:',news[0])


No1: 外媒:*****
No2: 日媒:******
......

.......

内容已马赛克!!!
>>>

首次做爬虫,为了方便下手找一个不用破解网页的某新闻网站,下载网页就能直接取得内容。其中的国际、国内和军事新闻三个网页作内容源,requests.get下载网页后,分析所得html文本,所有标记带日期刚好所需要的。

爬取正文

然后再根据url下载正文网页,分析可知id='article'的

层就是正文所在位置,.get_text()是取得文本的关键函数,然后适当做一些格式处理:

>>> def NewsDownload(url):    html = get(url)    html.encoding='uft-8'    soup = bs(html.text,'html.parser')    text = soup.find('div',id='article').get_text().strip()    text = text.replace('点击进入专题:','相关专题:')    text = text.replace('  ','\n  ')    while '\n\n\n' in text:        text = text.replace('\n\n\n','\n\n')    return text >>> url = 'https://******/w/2021-09-29/doc-iktzqtyt8811588.shtml'>>> NewsDownload(url)'原标题:******************************************************'>>>

界面代码

使用内置的图形界面库 tkinter 控件 Text 、Listbox、Scrollbar、Button。设置基本属性、放置位置、绑定命令,然后调试到程序完工!

源代码 News.pyw :其中涉及的网站名称已马赛克!

from requests import getfrom bs4 import BeautifulSoup as bsfrom datetime import datetime as dtfrom os import pathimport tkinter as tk def Today(style=1):    date = dt.today()    if style!=1: return f'{date.month}月{date.day}日'    return f'{date.year}-{date.month:02}-{date.day:02}' def SinaNews(style=1):    url1 = 'http://news.****.com.cn/'    if style==1: url1 += 'world'    elif style==2: url1 += 'china'    else: url1='https://mil.****.com.cn/'    text = get(url1)    text.encoding='uft-8'    soup = bs(text.text,'html.parser')    aTags = soup.find_all("a")    return [(t.text,t['href']) for t in aTags if Today() in str(t)] def NewsList(i):    global news    news = SinaNews(i)    tList.delete(0,tk.END)    for idx,item in enumerate(news):        tList.insert(tk.END,f'{idx+1:03} {item[0]}')    tText.config(state=tk.NORMAL)    tText.delete(0.0,tk.END)    tText.config(state=tk.DISABLED)    NewsShow(0)    def NewsList1(): NewsList(1)def NewsList2(): NewsList(2)def NewsList3(): NewsList(3) def NewsShow(idx):    if idx!=0:        idx = tList.curselection()[0]    title,url = news[idx][0],news[idx][1]    html = get(url)    html.encoding='uft-8'    soup = bs(html.text,'html.parser')    text = soup.find('div',id='article').get_text().strip()    text = text.replace('点击进入专题:','相关专题:')    text = text.replace('  ','\n  ')    while '\n\n\n' in text:        text = text.replace('\n\n\n','\n\n')    tText.config(state=tk.NORMAL)    tText.delete(0.0,tk.END)    tText.insert(tk.END, title+'\n\n'+text)    tText.config(state=tk.DISABLED)    def InitWindow(self,W,H):    Y = self.winfo_screenheight()    winPosition = str(W)+'x'+str(H)+'+8+'+str(Y-H-100)    self.geometry(winPosition)    icoFile = 'favicon.ico'    f = path.exists(icoFile)    if f: win.iconbitmap(icoFile)    self.resizable(False,False)    self.wm_attributes('-topmost',True)    self.title(bTitle[0])    SetControl()    self.update()    self.mainloop() def SetControl():    global tList,tText    tScroll = tk.Scrollbar(win, orient=tk.VERTICAL)    tScroll.place(x=450,y=320,height=300)    tList = tk.Listbox(win,selectmode=tk.BROWSE,yscrollcommand=tScroll.set)    tScroll.config(command=tList.yview)    for idx,item in enumerate(news):        tList.insert(tk.END,f'{idx+1:03} {item[0]}')    tList.place(x=15,y=320,width=435,height=300)    tList.select_set(0)    tList.focus()    bW,bH = 70,35    #按钮的宽高    bX,bY = 95,270    #按钮的坐标    tBtn1 = tk.Button(win,text=bTitle[1],command=NewsList1)    tBtn1.place(x=bX,y=bY,width=bW,height=bH)    tBtn2=tk.Button(win,text=bTitle[2],command=NewsList2)    tBtn2.place(x=bX+100,y=bY,width=bW,height=bH)    tBtn3 = tk.Button(win,text=bTitle[3],command=NewsList3)    tBtn3.place(x=bX+200,y=bY,width=bW,height=bH)    tScroll2 = tk.Scrollbar(win, orient=tk.VERTICAL)    tScroll2.place(x=450,y=10,height=240)    tText = tk.Text(win,yscrollcommand=tScroll2.set)    tScroll2.config(command=tText.yview)    tText.place(x=15,y=10,width=435,height=240)    tText.config(state=tk.DISABLED,bg='azure',font=('宋体', '14'))    NewsShow(0)    tList.bind("",NewsShow) if __name__=='__main__':     win = tk.Tk()    bTitle = ('今日新闻','国际新闻','国内新闻','军事新闻')    news = SinaNews()    InitWindow(win,480,640)

奉上全部代码,在此就不作详细分析了,如有需要请留言讨论。我的使用环境 Win7+Python3.8.8 下可以无错运行!文中涉及网站名称已打上马赛克,猜不出名字的可以私下里问我。

软件编译

使用pyinstaller.exe编译成单个运行文件,注意源码文件的后缀名应该用.pyw否则会有cmd黑窗口出现。还有一个小知识点,任意网站的Logo图标icon文件,一般都能在根目录里下载到,即:
http(s)://websiteurl.com(.cn)/favicon.ico

编译命令如下:

D:\>pyinstaller --onefile --nowindowed --icon="D:\favicon.ico" News.pyw

编译完成后,在dist文件夹下生成一个News.exe可执行文件,大小约15M还能接受。

反正拿走就能直接用,临走前记得收藏,谢谢!

到此,关于"结合Python网络爬虫做一个今日新闻小程序的方法教程"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

新闻 网页 方法 爬虫 程序 文件 网站 教程 网络 专题 内容 分析 学习 编译 代码 正文 位置 军事 名称 命令 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发与软件测试职业能力要求 教职工如何提高网络安全意识 安全风险清单和数据库建设 软件开发公司怎么找活 中兴数据库访问中间件含义 数据库软件怎么备份 在数据库中for循环语句 杭州福柚网络技术有限公司 哪里可以看服务器主机名字 忻州学习网络技术 渭南华阴软件开发 怎么查看服务器是否链接 数据库考试要点 主流的空间数据库索引技术 浙江筷蜂网络技术有限公司 数据库用户名 数据库角色名 2网络安全警示案例 南宁app软件开发搭建 机关单位网络安全制度范文 网易手游花雨庭服务器如何组队 黑魂服务器什么时候开 网络安全法解读五百字 攻击传奇私服的服务器要多少钱 软件开发专业可以考一建嘛 电脑捷顺数据库在哪里 龙之谷手游忘记在哪个服务器 南京软件开发去哪学 武汉智能软件开发教程 蜗牛学院网络安全学多久 网易手游花雨庭服务器如何组队
0