python爬虫百度新闻标题,并且做简单的数据分析

python爬虫实战之百度新闻爬取 百度新闻信息爬取 目录百度新闻信息爬取序言获取在百度新闻中搜索“阿里巴巴”的网页源代码编写正则表达式提取新闻信息数据清洗并打印输出实战完整代码 序言  通过对百度新闻标题、链接、日期及来源的爬取,了解使用python语言爬取少量数据的基本方法。 获取在百度新闻中搜索“阿里巴巴”的网页源代码  为了获得请求头,我们可以在谷歌浏览器中的地址栏中输入about:version,即可获得headers。 ... 阅读详情

python爬虫-百度新闻标题和编辑信息,并且做简单的数据分析

需要下载的库

我所用的python版本为: Python 3.7.4

  1. 获取新闻信息需要的库: beautifulsoup4,request,re;
  2. 信息存储需要的库(获取信息存在csv文件中): csv;
  3. 数据分析需要的库: numpy、matplotlib;
  4. 界面设计需要的库: tkinter;

需要对html一些标签有一定的了解

可以到w3cschool了解
打开百度新闻网站,按F12开发者工具,或者右键点击查看源,就可以看到网页的源代码。

代码设计思想

1.每个新闻网页通过request请求获得网页源代码,再通过bs4(beautifulsoup)来对源代码进行提取信息;
2.每个类的新闻获取标题、链接是相同的。通过观察源代码,可发现新闻的标题是存在li标签中a标签里面并且每个a标签都有<target=”_blank”>属性,通过bs4(beautifulsoup)的select()来获取其标题和链接;
如图:
新闻标题、链接存放的代码特征:
在这里插入图片描述
3.而首页新闻中有新闻热搜词,体育新闻中有体育热搜词,其标题和链接也是以上述的特征存储;
4. 除了首页的新闻,其它类的新闻里面新闻的每个网页的源代码几乎都是差不多的。而前面先获取了每类新闻里面每个新闻链接,重新以步骤1来提取相关信息(编辑作者、编辑日期、编辑时间)。通过查看网页源代码,可发现编辑信息是放在类名为author-txt的div块里面(div class=”author-txt”),编辑作者姓名放在类名为author-name的p标签,编辑日期、时间放在类名为date的span标签和类名为time的span标签里。而当中也有些新闻的网页源代码是不同的,只能以-1的形式存入信息列表中;小部分的编辑信息存放不符合上面的特征(就以-1代替):
5.每个信息都以一个列表来进行存储;
6.将每个列表的信息通过pandas库来存入csv文件中;
7.进行每类数据分析可视化处理时,通过datetime来获取今天、昨天的时间,然后用dict字典和一定运算来统计每类新闻里面今天、昨天、其它时间三个编辑时间分布的百分比,然后用matplotlib库来画条形图。
8.通过tkinter库设计一个界面,把每类新闻设计成一个按钮,通过点击按钮中显示出每类里面的新闻信息;把首页、体育新闻热搜词放在左下、右下两个角。

运行结果

可以点击按钮获取各类信息:
在这里插入图片描述
发布日期分布的分析:
在这里插入图片描述

源代码

main.py(主程序):

from tkinter import *
import datetime
import numpy as np
import matplotlib.pyplot as plt
from hp import news_title,news_url,hot_title,hot_url
from inte import news_title2,news_url2,news_date,news_time,news_author,li
from mil import news_title3,news_url3,news_date2,news_time2,news_author2,li2
from finance import news_title4,news_url4,news_date3,news_time3,news_author3,li3
from ent import news_title5,news_url5,news_date4,news_time4,news_author4,li4
from sports import news_title6,news_url6,news_date5,news_time5,news_author5,hot_title2,hot_url2,li5
from tech import news_title7,news_url7,news_date6,news_time6,news_author6,li6
from game import news_title8,news_url8,news_date7,news_time7,news_author7,li7
def hp_print():#首页新闻输出
    txt.delete('1.0','end')#清空Text框内容
    txt.insert(END,'首页新闻标题\t新闻链接\n')
    for x in range(len(news_title)):
        txt.insert(END,news_title[x])
        txt.insert(END,'\t')
        txt.insert(END,news_url[x])
        txt.insert(END,'\n')
def print(title,url,date,time,author):#除首页外其它类新闻输出
    txt.delete('1.0','end')#清空
    txt.insert(END,'新闻标题\t新闻链接\t编辑日期\t编辑时间\t编辑作者\n')
    for x in range(len(title)):
        txt.insert(END,title[x])
        txt.insert(END,'\t')
        txt.insert(END,url[x])
        txt.insert(END,'\t')
        txt.insert(END,date[x])
        txt.insert(END,'\t')
        txt.insert(END,time[x])
        txt.insert(END,'\t')
        txt.insert(END,author[x])
        txt.insert(END,'\n')        
root=Tk()
root.title('百度新闻-我知道!')#界面标题
root.geometry('1024x560')
lb=Label(root,text='点击按钮,获得各类新闻中新闻信息(-1表示不清楚)')
lb.place(relx=0.1,rely=0.01,relwidth=0.8,relheight=0.08)
txt = Text(root)#各类新闻信息输出框
btn1=Button(root,text='首页',command=hp_print)
btn1.place(relx=0.005, rely=0.1, relwidth=0.05, relheight=0.05)
btn2=Button(root,text='int',command=lambda:print(news_title2,news_url2,news_date,news_time,news_author))
btn2.place(relx=0.08, rely=0.1, relwidth=0.05, relheight=0.05)
btn3=Button(root,text='mil',command=lambda:print(news_title3,news_url3,news_date2,news_time2,news_author2))
btn3.place(relx=0.155, rely=0.1, relwidth=0.05, relheight=0.05)
btn4=Button(root,text='财经',command=lambda:print(news_title4,news_url4,news_date3,news_time3,news_author3))
btn4.place(relx=0.23, rely=0.1, relwidth=0.05, relheight=0.05)
btn5=Button(root,text='娱乐',command=lambda:print(news_title5,news_url5,news_date4,news_time4,news_author4))
btn5.place(relx=0.305, rely=0.1, relwidth=0.05, relheight=0.05)
btn6=Button(root,text='体育',command=lambda:print(news_title6,news_url6,news_date5,news_time5,news_author5))
btn6.place(relx=0.38, rely=0.1, relwidth=0.05, relheight=0.05)
btn7=Button(root,text='科技',command=lambda:print(news_title7,news_url7,news_date6,news_time6,news_author6))
btn7.place(relx=0.455, rely=0.1, relwidth=0.05, relheight=0.05)
btn8=Button(root,text='游戏',command=lambda:print(news_title8,news_url8,news_date7,news_time7,news_author7))
btn8.place(relx=0.53, rely=0.1, relwidth=0.05, relheight=0.05)
txt2=Text(root)#新闻热搜词框
txt2.insert(END,'新闻热搜词\t链接\n')
for x in range(len(hot_title)):
    txt2.insert(END,hot_title[x])
    txt2.insert(END,'\t')
    txt2.insert(END,hot_url[x])
    txt2.insert(END,'\n')
txt2.place(rely=0.8, relwidth=0.4, relheight=0.2)
txt3=Text(root)#体育热搜词框
txt3.insert(END,'体育热搜词\t链接\n')
for x in range(len(hot_title2)):
    txt3.insert(END,hot_title2[x])
    txt3.insert(END,'\t')
    txt3.insert(END,hot_url2[x])
    txt3.insert(END,'\n')   
txt3.place(relx=0.6,rely=0.8, relwidth=0.4, relheight=0.2)
txt.place(rely=0.2, relwidth=1, relheight=0.6)
today=datetime.date.today()
yesterday=today - datetime.timedelta(days=1)
s=str(today)[5:]#获得今天
s2=str(yesterday)[5:]#昨天
ind=np.arange(7)
l1=[li[0],li2[0],li3[0],li4[0],li5[0],li6[0],li7[0]]#今天百分比数据
l2=[li[1],li2[1],li3[1],li4[1],li5[1],li6[1],li7[1]]#昨天百分比数据
l3=[li[2],li2[2],li3[2],li4[2],li5[2],li6[2],li7[2]]#其它时间百分比数据
ax=plt.subplot()
rects1=ax.bar(ind,l1,0.3,color='SkyBlue',label=s)#今天
rects2=ax.bar(ind+0.3,l2,0.3,color='IndianRed',label=s2)#昨天
rects2=ax.bar(ind+0.6,l3,0.3,color='black',label='-1')#其它
ax.set_ylabel('Percent')
ax.set_title('Percentage of news date distribution')
plt.xticks(ind+0.3,('Civil','Mil','Fin','Ent','Sport','Tech','Game'))#横坐标
ax.legend()
plt.show()
root.mainloop()

hp.py(首页新闻):

import pandas as pd
import requests
import re
from bs4 import BeautifulSoup
html="https://news.baidu.com/"#首页新闻
resp=requests.get(html)
resp.encoding='utf-8'
content=resp.text
bs=BeautifulSoup(content,'html.parser')
filename='首页新闻.csv'
news_title=[]#标题
news_url=[]#链接
hot_title=[]#热搜
hot_url=[]#热搜链接
for news in bs.select('li'):#标题、链接获取
    if len(news.select('a[target="_blank"]'))>0:#用标签属性来访问([])
        title=news.select('a[target="_blank"]')[0].text
        url=news.select('a[target="_blank"]')[0]['href']
        news_title.append(title)
        news_url.append(url)
dataframe=pd.DataFrame({'首页新闻标题':news_title,'新闻链接':news_url})
dataframe.to_csv(filename,sep=',',encoding='utf-8-sig')#导出csv文件
for hotwords in bs.select('li'):#热搜词获取
    if(len(hotwords.select('a.hotwords_li_a'))>0):
        hot_title.append(hotwords.select('a.hotwords_li_a')[0].text)
        hot_url.append(hotwords.select('a.hotwords_li_a')[0]['href'])

inte.py:

import re
import requests
import datetime
import pandas as pd
from bs4 import BeautifulSoup
html="https://news.baidu.com/guonei"##inte新闻
resp=requests.get(html)
resp.encoding='utf-8'
content=resp.text
bs=BeautifulSoup(content,'html.parser')
filename='inte新闻.csv'
news_title2=[]
news_url2=[]
news_date=[]#编辑日期
news_time=[]#编辑时间
news_author=[]#编辑作者
for news in bs.select('li'):#获取标题、链接
    if len(news.select('a[target="_blank"]'))>0:#用标签属性来访问([])
        title=news.select('a[target="_blank"]')[0].text
        url=news.select('a[target="_blank"]')[0]['href']
        news_title2.append(title)
        news_url2.append(url)
pos=0
for html2 in news_url2:
    resp=requests.get(html2)
    resp.encoding='utf-8'
    content=resp.text
    bs=BeautifulSoup(content,'html.parser')
    flag=1#用来区别新闻链接后的一些信息存放标签不同
    if(len(bs.select('div.author-txt'))==0):
        flag=0
    for news in bs.select('div.author-txt'):#绝大部分日期、时间、编辑存放在这个块中
        author=''
        if len(news.select('p.author-name'))>0:
            author=news.select('p.author-name')[0].text
            date=news.select('span.date')[0].text
            time=news.select('span.time')[0].text
        news_date.append(date[5:])
        news_time.append(time)
        news_author.append(author)
    if(flag==0):
        news_date.append('-1')#表示新闻链接后的存放需要信息标签不一样,未能找到
        news_time.append('-1')
        news_author.append('-1')
    pos=pos+1
dataframe=pd.DataFrame({'inte新闻标题':news_title2,'新闻链接':news_url2,'编辑日期':news_date,'编辑时间':news_time,'编辑作者':news_author})
dataframe.to_csv(filename,sep=',',encoding='utf-8-sig')#导出csv文件
today=datetime.date.today()#获取三个时间百分比
yesterday=today - datetime.timedelta(days=1)
s=str(today)[5:]
s2=str(yesterday)[5:]
dx={s:0,s2:0,'-1':0}#字典统计每个日期个数,-1表示不清楚/其它时间
dx_keys=dx.keys()
for i in news_date:
    if i in dx_keys:
        dx[i]=dx[i]+1
    else:dx['-1']=dx['-1']+1
for x in dx:
    dx[x]=dx[x]/len(news_date)
li=list(dx.values())

mil.py:

import re
import requests
import datetime
import pandas as pd
from bs4 import BeautifulSoup
html="https://news.baidu.com/mil"#新闻
resp=requests.get(html)
resp.encoding='utf-8'
content=resp.text
bs=BeautifulSoup(content,'html.parser')
filename='新闻.csv'
news_title3=[]
news_url3=[]
news_date2=[]
news_time2=[]
news_author2=[]
for news in bs.select('li'):#获取标题、链接
    if len(news.select('a[target="_blank"]'))>0:#用标签属性来访问([])
        title=news.select('a[target="_blank"]')[0].text
        url=news.select('a[target="_blank"]')[0]['href']
        news_title3.append(title)
        news_url3.append(url)
pos=0
for html2 in news_url3:#获取编辑信息
    resp=requests.get(html2)
    resp.encoding='utf-8'
    content=resp.text
    bs=BeautifulSoup(content,'html.parser')
    flag=1#用来区别新闻链接后的一些信息存放标签不同
    if(len(bs.select('div.author-txt'))==0):
        flag=0
    for news in bs.select('div.author-txt'):#绝大部分日期、时间、编辑存放在这个块中
        author=''
        if len(news.select('p.author-name'))>0:
            author=news.select('p.author-name')[0].text
            date=news.select('span.date')[0].text
            time=news.select('span.time')[0].text
        news_date2.append(date[5:])
        news_time2.append(time)
        news_author2.append(author)
    if(flag==0):
        news_date2.append('-1')#-1表示新闻链接后的存放需要信息标签不一样,未能找到
        news_time2.append('-1')
        news_author2.append('-1')
    pos=pos+1
dataframe=pd.DataFrame({'inter新闻标题':news_title3,'新闻链接':news_url3,'编辑日期':news_date2,'编辑时间':news_time2,'编辑作者':news_author2})
dataframe.to_csv(filename,sep=',',encoding='utf-8-sig')#导出csv文件
today=datetime.date.today()#获取三个时间的百分比
yesterday=today - datetime.timedelta(days=1)
s=str(today)[5:]
s2=str(yesterday)[5:]
dx={s:0,s2:0,'-1':0}
dx_keys=dx.keys()
for i in news_date2:
    if i in dx_keys:
        dx[i]=dx[i]+1
    else:dx['-1']=dx['-1']+1
for x in dx:
    dx[x]=dx[x]/len(news_date2)
li2=list(dx.values())

finance.py(财经):

import re
import requests
import datetime
import pandas as pd
from bs4 import BeautifulSoup
html="https://news.baidu.com/finance"#财经新闻
resp=requests.get(html)
resp.encoding='utf-8'
content=resp.text
bs=BeautifulSoup(content,'html.parser')
filename='财经新闻.csv'
news_title4=[]
news_url4=[]
news_date3=[]
news_time3=[]
news_author3=[]
for news in bs.select('li'):#获取标题、链接
    if len(news.select('a[target="_blank"]'))>0:#用标签属性来访问([])
        title=news.select('a[target="_blank"]')[0].text
        url=news.select('a[target="_blank"]')[0]['href']
        news_title4.append(title)
        news_url4.append(url)
pos=0
for html2 in news_url4:#获取编辑信息
    resp=requests.get(html2)
    resp.encoding='utf-8'
    content=resp.text
    bs=BeautifulSoup(content,'html.parser')
    flag=1#用来区别新闻链接后的一些信息存放标签不同
    if(len(bs.select('div.author-txt'))==0):
        flag=0
    for news in bs.select('div.author-txt'):#绝大部分日期、时间、编辑存放在这个块中
        author=''
        if len(news.select('p.author-name'))>0:
            author=news.select('p.author-name')[0].text
            date=news.select('span.date')[0].text
            time=news.select('span.time')[0].text
        news_date3.append(date[5:])
        news_time3.append(time)
        news_author3.append(author)
    if(flag==0):
        news_date3.append('-1')#表示新闻链接后的存放需要信息标签不一样,未能找到
        news_time3.append('-1')
        news_author3.append('-1')
    pos=pos+1
dataframe=pd.DataFrame({'财经新闻标题':news_title4,'新闻链接':news_url4,'编辑日期':news_date3,'编辑时间':news_time3,'编辑作者':news_author3})
dataframe.to_csv(filename,sep=',',encoding='utf-8-sig')#导出csv文件
today=datetime.date.today()
yesterday=today - datetime.timedelta(days=1)
s=str(today)[5:]
s2=str(yesterday)[5:]
dx={s:0,s2:0,'-1':0}
dx_keys=dx.keys()
for i in news_date3:
    if i in dx_keys:
        dx[i]=dx[i]+1
    else:dx['-1']=dx['-1']+1
for x in dx:
    dx[x]=dx[x]/len(news_date3)
li3=list(dx.values())

ent.py(娱乐):

import re
import requests
import datetime
import pandas as pd
from bs4 import BeautifulSoup
html="https://news.baidu.com/ent"#娱乐新闻
resp=requests.get(html)
resp.encoding='utf-8'
content=resp.text
bs=BeautifulSoup(content,'html.parser')
filename='娱乐新闻.csv'
news_title5=[]
news_url5=[]
news_date4=[]
news_time4=[]
news_author4=[]
for news in bs.select('li'):
    if len(news.select('a[target="_blank"]'))>0:#用标签属性来访问([])
        title=news.select('a[target="_blank"]')[0].text
        url=news.select('a[target="_blank"]')[0]['href']
        news_title5.append(title)
        news_url5.append(url)
pos=0
for html2 in news_url5:
    resp=requests.get(html2)
    resp.encoding='utf-8'
    content=resp.text
    bs=BeautifulSoup(content,'html.parser')
    flag=1#用来区别新闻链接后的一些信息存放标签不同
    if(len(bs.select('div.author-txt'))==0):
        flag=0
    for news in bs.select('div.author-txt'):#绝大部分日期、时间、编辑存放在这个块中
        author=''
        if len(news.select('p.author-name'))>0:
            author=news.select('p.author-name')[0].text
            date=news.select('span.date')[0].text
            time=news.select('span.time')[0].text
        news_date4.append(date[5:])
        news_time4.append(time)
        news_author4.append(author)
    if(flag==0):
        news_date4.append('-1')#表示新闻链接后的存放需要信息标签不一样,未能找到
        news_time4.append('-1')
        news_author4.append('-1')
    pos=pos+1
dataframe=pd.DataFrame({'娱乐新闻标题':news_title5,'新闻链接':news_url5,'编辑日期':news_date4,'编辑时间':news_time4,'编辑作者':news_author4})
dataframe.to_csv(filename,sep=',',encoding='utf-8-sig')
today=datetime.date.today()
yesterday=today - datetime.timedelta(days=1)
s=str(today)[5:]
s2=str(yesterday)[5:]
dx={s:0,s2:0,'-1':0}
dx_keys=dx.keys()
for i in news_date4:
    if i in dx_keys:
        dx[i]=dx[i]+1
    else:dx['-1']=dx['-1']+1
for x in dx:
    dx[x]=dx[x]/len(news_date4)
li4=list(dx.values())

sports.py(体育)其中有热搜词:

import re
import requests
import datetime
import pandas as pd
from bs4 import BeautifulSoup
html="https://news.baidu.com/sports"#体育新闻
resp=requests.get(html)
resp.encoding='utf-8'
content=resp.text
bs=BeautifulSoup(content,'html.parser')
filename='体育新闻.csv'
news_title6=[]
news_url6=[]
news_date5=[]
news_time5=[]
news_author5=[]
hot_title2=[]#体育新闻里面的热搜词
hot_url2=[]
for news in bs.select('li'):
    if len(news.select('a[target="_blank"]'))>0:#用标签属性来访问([])
        title=news.select('a[target="_blank"]')[0].text
        url=news.select('a[target="_blank"]')[0]['href']
        news_title6.append(title)
        news_url6.append(url)
for hotwords in bs.select('li'):
    if(len(hotwords.select('a[title]'))>0):
        news_title6.remove(hotwords.select('a[title]')[0].text)#删去热搜词
        news_url6.remove(hotwords.select('a[title]')[0]['href'])
        hot_title2.append(hotwords.select('a[title]')[0].text)
        hot_url2.append(hotwords.select('a[title]')[0]['href'])
for hotwords in bs.select('li'):
    if(len(hotwords.select('a[mon="col=schedule"]'))>0):
        news_title6.remove(hotwords.select('a[mon="col=schedule"]')[0].text)#删去赛程表
        news_url6.remove(hotwords.select('a[mon="col=schedule"]')[0]['href'])
pos=0
for html2 in news_url6:
    resp=requests.get(html2)
    resp.encoding='utf-8'
    content=resp.text
    bs=BeautifulSoup(content,'html.parser')
    flag=1#用来区别新闻链接后的一些信息存放标签不同
    if(len(bs.select('div.author-txt'))==0):
        flag=0
    for news in bs.select('div.author-txt'):#绝大部分日期、时间、编辑存放在这个块中
        author=''
        if len(news.select('p.author-name'))>0:
            author=news.select('p.author-name')[0].text
            date=news.select('span.date')[0].text
            time=news.select('span.time')[0].text
        news_date5.append(date[5:])
        news_time5.append(time)
        news_author5.append(author)
    if(flag==0):
        news_date5.append('-1')#表示新闻链接后的存放需要信息标签不一样,未能找到
        news_time5.append('-1')
        news_author5.append('-1')
    pos=pos+1
dataframe=pd.DataFrame({'体育新闻标题':news_title6,'新闻链接':news_url6,'编辑日期':news_date5,'编辑时间':news_time5,'编辑作者':news_author5})
dataframe.to_csv(filename,sep=',',encoding='utf-8-sig')
today=datetime.date.today()
yesterday=today - datetime.timedelta(days=1)
s=str(today)[5:]
s2=str(yesterday)[5:]
dx={s:0,s2:0,'-1':0}
dx_keys=dx.keys()
for i in news_date5:
    if i in dx_keys:
        dx[i]=dx[i]+1
    else:dx['-1']=dx['-1']+1
for x in dx:
    dx[x]=dx[x]/len(news_date5)
li5=list(dx.values())

tech.py(教育):

import re
import requests
import datetime
import pandas as pd
from bs4 import BeautifulSoup
html="https://news.baidu.com/tech"#科技新闻
resp=requests.get(html)
resp.encoding='utf-8'
content=resp.text
bs=BeautifulSoup(content,'html.parser')
filename='科技新闻.csv'
news_title7=[]
news_url7=[]
news_date6=[]
news_time6=[]
news_author6=[]
for news in bs.select('li'):
    if len(news.select('a[target="_blank"]'))>0:#用标签属性来访问([])
        title=news.select('a[target="_blank"]')[0].text
        url=news.select('a[target="_blank"]')[0]['href']
        news_title7.append(title)
        news_url7.append(url)
pos=0
for html2 in news_url7:
    resp=requests.get(html2)
    resp.encoding='utf-8'
    content=resp.text
    bs=BeautifulSoup(content,'html.parser')
    flag=1#用来区别新闻链接后的一些信息存放标签不同
    if(len(bs.select('div.author-txt'))==0):
        flag=0
    for news in bs.select('div.author-txt'):#绝大部分日期、时间、编辑存放在这个块中
        author=''
        if len(news.select('p.author-name'))>0:
            author=news.select('p.author-name')[0].text
            date=news.select('span.date')[0].text
            time=news.select('span.time')[0].text
        news_date6.append(date[5:])
        news_time6.append(time)
        news_author6.append(author)
    if(flag==0):
        news_date6.append('-1')#表示新闻链接后的存放需要信息标签不一样,未能找到
        news_time6.append('-1')
        news_author6.append('-1')
    pos=pos+1
dataframe=pd.DataFrame({'科技新闻标题':news_title7,'新闻链接':news_url7,'编辑日期':news_date6,'编辑时间':news_time6,'编辑作者':news_author6})
dataframe.to_csv(filename,sep=',',encoding='utf-8-sig')
today=datetime.date.today()
yesterday=today - datetime.timedelta(days=1)
s=str(today)[5:]
s2=str(yesterday)[5:]
dx={s:0,s2:0,'-1':0}
dx_keys=dx.keys()
for i in news_date6:
    if i in dx_keys:
        dx[i]=dx[i]+1
    else:dx['-1']=dx['-1']+1
for x in dx:
    dx[x]=dx[x]/len(news_date6)
li6=list(dx.values())

game.py(游戏):

import re
import requests
import datetime
import pandas as pd
from bs4 import BeautifulSoup
html="https://news.baidu.com/game"#游戏新闻
resp=requests.get(html)
resp.encoding='utf-8'
content=resp.text
bs=BeautifulSoup(content,'html.parser')
filename='游戏新闻.csv'
news_title8=[]
news_url8=[]
news_date7=[]
news_time7=[]
news_author7=[]
for news in bs.select('h1'):
    title=news.select('a[target="_blank"]')[0].text
    url=news.select('a[target="_blank"]')[0]['href']
    news_title8.append(title)
    news_url8.append(url)
for news in bs.select('li'):
    if len(news.select('a[target="_blank"]'))>0:#用标签属性来访问([])
        title=news.select('a[target="_blank"]')[0].text
        url=news.select('a[target="_blank"]')[0]['href']
        news_title8.append(title)
        news_url8.append(url)
pos=0
for html2 in news_url8:
    resp=requests.get(html2)
    resp.encoding='utf-8'
    content=resp.text
    bs=BeautifulSoup(content,'html.parser')
    flag=1#用来区别新闻链接后的一些信息存放标签不同
    if(len(bs.select('div.author-txt'))==0):
        flag=0
    for news in bs.select('div.author-txt'):#绝大部分日期、时间、编辑存放在这个块中
        author=''
        if len(news.select('p.author-name'))>0:
            author=news.select('p.author-name')[0].text
            date=news.select('span.date')[0].text
            time=news.select('span.time')[0].text
        news_date7.append(date[5:])
        news_time7.append(time)
        news_author7.append(author)
    if(flag==0):
        news_date7.append('-1')#表示新闻链接后的存放需要信息标签不一样,未能找到
        news_time7.append('-1')
        news_author7.append('-1')
    pos=pos+1
dataframe=pd.DataFrame({'游戏新闻标题':news_title8,'新闻链接':news_url8,'编辑日期':news_date7,'编辑时间':news_time7,'编辑作者':news_author7})
dataframe.to_csv(filename,sep=',',encoding='utf-8-sig')
today=datetime.date.today()
yesterday=today - datetime.timedelta(days=1)
s=str(today)[5:]
s2=str(yesterday)[5:]
dx={s:0,s2:0,'-1':0}
dx_keys=dx.keys()
for i in news_date7:
    if i in dx_keys:
        dx[i]=dx[i]+1
    else:dx['-1']=dx['-1']+1
for x in dx:
    dx[x]=dx[x]/len(news_date7)
li7=list(dx.values())
python爬取百度新闻采集教程 各位站长朋友大家好,今天小编继续给大家分享一下我们在做SEO文章收录的时候,如何寻找采集目标网站,还有关键词的设置。掌握这两个方法的目的呢是让你批量的能够找到更多的文章,同时可以把文章的标题和文章的内容做二次的伪原创。采集目标的话,这里我们可以去百度新闻源,它是包含海量资讯的新闻服务平台。可以搜索新闻事件、热点话题、人物动态、产品资讯等,快速了解它们的最新进展,基本上是覆盖了各行各业,完全能满足我们的采集需求! 首先第一点我们来看一下如何寻找采集的网站,就是说哪些网站你能采集或者是说去哪儿找,对吧.. 阅读详情

相关推荐

python爬取百度新闻数据,python爬取新闻网站内容

大家好,本文将围绕python爬取百度新闻数据展开说明,python爬取新闻网站内容是一个很多人都想弄明白的事情,想搞清楚python爬取文章内容需要先了解以下几个事情。

神经网络爱好者 2070

使用python爬虫爬取百度新闻,告诉你社会热点话题

1.网络爬虫基础使用 (1)urllib介绍: urllib中包括了四个模块,包括: urllib.request:可以用来发送request和获取request的结果 urllib.error:包含了urllib.request产生的异常 urllib.parse:用来解析和处理URL urllib.robotparse:用来解析页面的robots.txt文件 (2)urllib.reque...

weixin_44906535的博客 9488

Python网络爬虫实战1:百度新闻数据爬取

百度新闻网址:https://news.baidu.com/

简时刻的博客 1万+

Python实现网络爬虫,爬关键词“武汉”的百度新闻

1. 选取目标网页 选取目标网页是百度新闻的首页,界面截图入如下: 2. 分析目标网页 分析目标网页主要工作有分析目标页面获取后台数据的方式,如:ajax还是后台直接返回,如果是后台直接返回数据,就开始分析返回response的DOM结构,设计Xpath表达式获取数据。 通过分析,百度新闻是属于后台直接返回的形式,不是Ajax。获取新闻路径是: url = "https://www.baidu....

软件工程师文艺 3979

AI网络爬虫:deepseek爬取百度新闻资讯的搜索结果

这些URL的规律在于它们都是请求相同关键词的新闻搜索结果,但是请求的页面不同,因此`pn`参数的值不同。定位div标签中class="news-title-font_1xS-F"的a标签,提取其href属性值作为网页下载URL,提取其aria-label属性值,作为网页文件名;- 第一个URL的`pn`参数值为40,表示请求的是第40页的新闻结果。- 第二个URL的`pn`参数值为30,表示请求的是第30页的新闻结果。- 第三个URL的`pn`参数值为0,表示请求的是第1页的新闻结果。

AIGCTribe的博客 1711

Python 网络爬虫基础知识及体验

电源电路是一个电子产品的重要组成部分,电源电路设计的好坏,直接牵连产品性能的好坏。我们电子产品的电源电路主要有线性电源和高频开关电源。从理论上讲,线性电源是用户需要多少电流,输入端就要提供多少电流;开关电源是用户需要多少功率,输入端就要提供多少功率。 线性电源 线性电源功率器件工作在线性状态,如我们常用的稳压芯片 LM7805、LM317、SPX1117等。下图是 LM7805 稳压电源电路原理图...

程序员「阿基米东」的编程之旅 1160

Python爬虫百度新闻标题,并且做简单的数据分析!挺简单的

需要下载的库 我所用的python版本为:Python 3.7.4 获取新闻信息需要的库:beautifulsoup4,request,re; 信息存储需要的库(获取信息存在csv文件中):csv; 数据分析需要的库:numpy、matplotlib; 界面设计需要的库:tkinter; 需要对html一些标签有一定的了解 可以到w3cschool了解 打开百度新闻网站,按F12开发者工具,或者右键点击查看源,就可以看到网页的源代码。 代码设计思想 1.每个新闻网页通过reques...

爬遍所有网站 2731

Python爬虫抓取百度新闻网站的新闻标题和链接:从基础到进阶的完整指南

本文详细介绍了如何使用Python编写爬虫,抓取百度新闻网站的新闻标题和链接。我们从基础的请求发送到动态页面处理,再到数据存储,逐步深入,帮助读者掌握了构建爬虫的全套流程。未来,随着网页反爬虫技术的发展,爬虫将面临越来越多的挑战。使用代理IP池、多线程、以及自动化工具如Selenium等技术,将帮助我们更高效地应对这些挑战。

2201_76125261的博客 1255

新闻网页制作源代码_Python爬虫百度新闻标题,并且做简单的数据分析!挺简单的

需要下载的库我所用的python版本为: Python 3.7.4获取新闻信息需要的库: beautifulsoup4,request,re;信息存储需要的库(获取信息存在csv文件中): csv;数据分析需要的库: numpy、matplotlib;界面设计需要的库: tkinter;需要对html一些标签有一定的了解可以到w3cschool了解打开百度新闻网站,按F12开发者工具,或者右键点击...

weixin_39998881的博客 1413

爬取百度新闻排行 - 获取新闻标题与点击量的Python爬虫教程

通过本教程,我们详细介绍了如何使用Python爬虫抓取百度新闻排行数据,提取新闻标题和点击量,并将数据进行可视化。我们还讨论了如何处理反爬虫机制,避免IP被封禁。在实际使用时,可以根据需要调整代码,抓取更多的新闻内容,或者进行更复杂的分析。如果你在爬取过程中遇到问题,建议逐步调试爬虫代码,查看返回的HTML结构,确保数据能够正确提取。此外,合理使用代理、请求延时等手段,有助于确保爬虫的稳定性。

2201_76125261的博客 773

Jev模型入门:从API接入到本地部署的完整实践指南

大模型的应用方式正从单一聊天窗口转向复杂的自动化工作流,而推理模型因具备指令跟随与结构化输出能力,成为构建Agent和数据处理管线的关键组件。Jev作为面向通用场景的推理模型,不仅提供了OpenAI兼容的API接口,还支持本地量化部署,兼顾隐私、可控性与长期成本。本文从模型定位出发,明确Jev与基座模型的差异,随后介绍密钥管理、API调用、参数调优,并深入演示基于Ollama与llama.cpp的本地部署流程,包括GGUF模型文件与chat template的匹配要点。针对实践中的常见问题,如密钥泄露、ma

weixin_29057237的博客 359

python爬虫新闻简语_Python爬虫百度新闻标题,并且做简单的数据分析!挺简单的...

需要下载的库我所用的python版本为: Python 3.7.4获取新闻信息需要的库: beautifulsoup4,request,re;信息存储需要的库(获取信息存在csv文件中): csv;数据分析需要的库: numpy、matplotlib;界面设计需要的库: tkinter;需要对html一些标签有一定的了解可以到w3cschool了解打开百度新闻网站,按F12开发者工具,或者右键点击...

weixin_39734074的博客 439

FPGA音频处理入门:手把手教你用Verilog实现I2S接收模块(附完整代码)

本文详细介绍了如何使用Verilog在FPGA上实现I2S接收模块,涵盖I2S协议原理、Verilog架构设计、完整代码实现及优化技巧。通过实战案例,帮助开发者快速掌握数字音频处理技术,适用于嵌入式音频系统开发。

weixin_30335575的博客 418

新闻网页制作源代码_Python爬虫百度新闻标题,并且做简单的数据分析!挺简单的...

需要下载的库我所用的python版本为: Python 3.7.4获取新闻信息需要的库: beautifulsoup4,request,re;信息存储需要的库(获取信息存在csv文件中): csv;数据分析需要的库: numpy、matplotlib;界面设计需要的库: tkinter;需要对html一些标签有一定的了解可以到w3cschool了解打开百度新闻网站,按F12开发者工具,或者右键点击...

weixin_39781452的博客 855

HR离职预测模型实战:可解释、可干预、可落地的三层架构

员工离职预测本质上是组织健康度的早期诊断技术,其核心原理在于从行为、心理与结构数据中识别稳定性衰减信号。该技术的价值不仅在于提升预测准确率,更在于将模糊的‘人才风险’转化为可归因、可干预的具体因子,如工龄阶段、满意度落差、薪酬分位数等。典型应用场景覆盖HRBP主动留任、业务部门梯队预警及HRIS系统智能升级。本文聚焦于构建具备业务可解释性与操作闭环能力的离职预警模型,深度融合HR工作流与机器学习工程实践,尤其强调逻辑回归基线、特征业务化重构及三层递进式架构设计。

赵士杰的博客 387

【STM32】STM32 CANFD外设的几种消息接收过滤模式

在控制器区域网络(CAN)系统中,正确配置消息过滤器对于有效管理网络通信至关重要。特别是在使用Flexible Data-rate Controller Area Network(FDCAN)时,选择合适的过滤器类型可以大大提高网络效率和消息处理速度。

林愿留的博客 6228

浅谈 Python 网络爬虫的那些事

在大数据、人工智能应用越来越普遍的今天,Python 可以说是当下世界上热门、应用广泛的编程语言之一,在人工智能、爬虫、数据分析、游戏、自动化运维等各个方面,无处不见其身影。随着大数据时代的来临,数据的收集与统计占据了重要地位,而数据的收集工作在很大程度上需要通过网络爬虫来爬取,所以网络爬虫技术变得十分重要。

黛琳ghz的博客,期待你的关注。 6827

vmware虚机Debian10磁盘空间无损扩容

该方法不适和LVM的磁盘管理 备份 一定要先做备份,虚机中直接创建一个快照备份 vm上增加空间 初始给的40G空间不够需要扩容,vm那给系统添加到100G 重新分区 查看当前分区情况 sudo fdisk -l

lms99251的博客 7455

【Python 网络爬虫技术】

1.1 爬虫的定义与工作原理网络爬虫,也被称为网络蜘蛛或网络机器人,是一种按照特定规则,自动抓取互联网信息的程序或脚本。其工作原理基于 HTTP 协议,大致流程为:首先,爬虫向目标网站发送 HTTP 请求,请求中包含了目标网页的 URL 地址;接着,网站服务器接收到请求后,将网页内容以 HTML、XML 或 JSON 等格式返回给爬虫;最后,爬虫对获取到的响应内容进行解析,提取出所需的数据,并进行存储或进一步处理。

2401_84473582的博客 2684

Yield Management软件:Lam Research二次开发_(5).缺陷分析与分类方法

在半导体制造过程中,缺陷分析和分类是提高良率管理(Yield Management)的关键步骤。通过准确地识别和分类缺陷,可以更好地理解工艺过程中的问题,从而采取有效的措施来提高生产效率和产品质量。本节将详细介绍缺陷分析和分类的方法,包括缺陷检测、特征提取、分类算法及其在Lam Research软件中的应用。

2401_87715305的博客 690

2025年软件测试职业院校技能大赛—ERP管理平台-基础信息管理商品管理测试用例

竞赛对接软件测试相关标准,以“ERP管理平台” 为被测系统,围绕软件测试领域的主流技术及工具,考查选手面 对实际问题的综合分析能力,对测试文档、测试用例的设计能力, 对单元测试、自动化测试、性能测试、接口测试等测试工具及方 法的掌握程度,检验选手团队协作能力、组织规划能力、方法运用能力等。

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 323

基于python的百度资讯爬虫的设计与实现

最后,程序将提取到的数据打印输出。扫描指定的环境变量 _proxy大小写不敏感的方法,对所有的操作系统,当它不能找到它,从Mac OS X的Mac OSX系统配置和Windows系统注册表中寻找代理信息。时间戳(timestamp)的方式:通常来说,时间戳表示的是从 1970 年 1 月 1 日 00:00:00 开始按秒计算的偏移量(time.gmtime(0))此模块中的函数无法处理 1970 纪元年以前的日期和时间或太遥远的未来(处理极限取决于 C 函数库,对于 32 位系统来说,是 2038 年)

weixin_49081159的博客 2683

《测绘综合能力》——大地测量

《测绘综合能力》大地测量 部分重要(常考)知识点(精简版)。

C_xxy's blog 804

爬取百度新闻标题和链接

import re import requests from lxml import etree url = 'http://news.baidu.com/' #请求头 headers = { "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/...

laicom的博客 4862

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

python爬虫爬取新闻标题及链接_网络爬虫百度新闻标题及链接爬取

1.主题:百度新闻爬取2.python代码:import requestsfrom bs4 import BeautifulSoupdef getHTMLText(url):try:r = requests.get(url,timeout=30)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:retur...

weixin_35939140的博客 2456

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

爬虫爬取实时新闻标题、时间及新闻内容并保存

一、概述 本文主要利用selenium控制谷歌浏览器爬取百度新闻资讯及新闻资讯的内容。并保存在本地。在爬取文章内容的时候我用到了正则表达式去匹配文字内容,这里在文章中会有一些杂质出现(后续会想解决方法)。 二、软件及应用模块 1、anaconda、pycharm anaconda里面集成了许多python的第三方库,使用起来非常方便。 在pycharm里面配置anaconda的环境具体方法可以百度...

weixin_44214267的博客 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

下一篇: python爬虫之爬取多篇含有关键词的文章标题和内容
土、拨鼠
博客等级 码龄8年 60粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值