写了几天《今日热搜》,可能部分读者感到这个公众号咋啦?改娱乐号了?不不不!主责主业还是在编代码,主打还是Python,请大家继续关注,之所以写了几天《今日热搜》,是因为代码没的写了。
今天,我把微博爬虫的定时实现的Python代码发给大家。用的很简答,一个while语句加timesleep就搞定了,具体代码如下:
import datetimeimport pandas as pd import requestsimport bs4import timeimport os#爬虫程序def crawl(t): da=t.split('-')[0] ti=t.split('-')[1] #目标网址 #print(f'weibo_{da}\weibo_{ti}.csv') url='https://s.weibo.com/top/summary' res=requests.get(url) response=bs4.BeautifulSoup(res.text,'lxml') #进行筛选保存操作 aa=response.select('tr > td > a') num=response.select('tr > td > span') #建立一个空的DataFrame inidata=pd.DataFrame() preurl='https://s.weibo.com' for i,j in zip(aa[1:],num): data=[[i.get_text(),preurl+i['href'],j.get_text()]] inidata=inidata.append(data) inidata.columns=('title','link','hot_number') #将其保存成CSV文件 inidata.to_csv(f'weibo_{da}/weibo_{ti}.csv',index=False) #每隔一段时间运行while True: now = datetime.datetime.now() ts= now.strftime('%Y%m%d-%H_%M_%S') da=ts.split('-')[0] path=f'weibo_{da}' isExists=os.path.exists(path) if not isExists: os.makedirs(path) else: pass crawl(ts) print(ts) time.sleep(900)
运行效果:
代码里用了当前时间进行命名,最终放在了一个云服务器上进行爬取,每日自动运行。明天,给大家讲一下关于这么多文件的后续处理。Bye!