干货教程:python网络数据采集教程_(数据科学学习手札33)基于Python的网络数据
优采云 发布时间: 2022-10-11 06:07干货教程:python网络数据采集教程_(数据科学学习手札33)基于Python的网络数据
一、简介
在前两篇文章中文章我们已经为使用Python做网络数据铺平了道路采集,但光说不练是不够的。因此,本文将基于作者最近的数据需求。网络数据实战采集;
2、网易金融*敏*感*词*爬虫实战
2.1 资料要求
本节我们需要采集是2012年6月29日海南板块所有个股的指标数据。我们爬取的平台是网易财经。以其中一个为例:
这是海南板块一只股票的历史数据页,我们需要的是2012年6月29日海南板块所有股票的十项指标(开盘价、最高价、最低价、收盘价、涨跌幅) 、涨跌(%)、成交量(手)、成交金额(万元)、幅度(%)、换手率(%)),下面我们一步步分解实现全过程:
2.2 第 1 步:获取所有股票代码
由于我们要使用爬虫自动批量获取数据,所以我们需要依次爬取的html地址需要预先创建。我们先观察一下网易金融历史数据页的命名规则:
可以看出网易财经的历史数据接口的命名规则是加上股票代码,加上.html?year=year&season=quarter,所以对应我们的数据周期要求,年份是2012,季度是2,所以规则已经定了,唯一不确定的是股票代码。我从一个财经软件下载了海南板块所有股票的当前成交数据(注意这个软件提供的历史成交数据维度没有网易财经网页提供的丰富,所以需要爬取网页. 对于 ) 上的更丰富的内容,这些单独的文件位于以下文件夹中:
我们用R提取所有股票的数字代码部分,然后保存在txt文件中,代码如下:
rm(列表=ls())
setwd('C:\\Users\\windows\\Desktop\\stock')
#获取当前目录下所有文件的名称和扩展名(注意这个文件夹中除了海南*敏*感*词*以外的文件不要放)
代码
#提取每个文件名的代码部分
C
C[i]
}
df
#写入txt文件
write.table(df,file='codes.txt',row.names=F,col.names=F)
这样,我们就得到了保存所有当前海南板块股票代码的txt文件:
接下来的工作就交给Python了~
2.3 第二步:准备目标网址
首先,使用 Python 读取代码.txt 文件中的股票代码:
'''设置股票代码文件所在路径'''path='C:\\Users\\windows\\Desktop\\stock\\'
'''读入股票代码文件并逐行拆分成列表'''with open(path+'codes.txt') as c:
code=c.readlines()'''打印代码内容'''
打印(代码)
运行结果:
可以看出换行符\n和双引号也算是字符内容。这时候使用前面介绍的re.sub就可以很方便的删除\n和双引号了:
importrefor i inrange(len(code)):
代码[i]= re.sub('\\n','',code[i])
code[i]= re.sub('"','',code[i])print(code)
运行结果:
好的~,既然已经生成了纯股票代码列表,我们需要做的就是生成我们所有的目标 URL:
htmls =[]'''使用字符串串联生成所有股票对应的目标网址'''
对于我 inrange(len(code)):
htmls.append('#39;+code[i]+'.html?year=2012&season=2')print(htmls)
运行结果:
让我们尝试用浏览器打开一个 URL:
2.4 第三步:单个URL的连接和内容解析测试
我们所有登陆页面的 URL 都已生成。让我们开始与这些 URL 建立连接并解析它们。当然,因为会有很多未知的错误,所以我们以其中一个网址为例做个例行测试:
from urllib.request importurlopenfrom bs4 importBeautifulSoup'''与第一个URL建立连接'''html=urlopen(htmls[0])'''打印BeautifulSoup解析的结果'''
打印(美丽汤(html))
运行结果:
可以看出,网页的内容已经成功解析。接下来我们观察网页的源码,看看我们需要的内容隐藏在哪些标签下:
很容易找到,因为这个界面比较简单,如果遇到比较复杂的界面,可以通过ctrl+F定位到界面中的内容。根据我的观察,变量名和具体的每日交易数据是在标签中确定的。tr,但它的每个数据都包装在一对标签中。因此,使用findAll()来定位tr,返回值如下:
from urllib.request importurlopenfrom bs4 importBeautifulSoup'''与第一个URL建立连接'''html=urlopen(htmls[0])
obj= BeautifulSoup(html,'lxml')'''使用findAll定位目标标签及其属性'''obj.findAll('tr')
运行结果:
可以看出我们确实拿到了收录目标内容的block,但是前后充满了很多不相关的信息,所以我们需要用正则表达式来精确的剪出我们想要的部分,因为我们需要的是2012-06-29数据,日期是每行数据的开头,所以构造一个正则表达式:
2012-06-29.*2012-06-28
更精确的信息提取:
from urllib.request importurlopenfrom bs4 importBeautifulSoupimportre'''连接第一个URL'''html=urlopen(htmls[0])
obj= BeautifulSoup(html,'lxml')'''使用findAll定位目标标签及其属性,并以字符形式返回结果'''text= str(obj.findAll('tr'))'''使用日期区间为 正则表达式规则大致提取内容'''target= re.findall('2012-06-29.*?2012-06-28',text)[0]print(target)
运行结果:
可以看出,除了里面标签的内容,剩下的就是我们需要提取的内容,所以我们继续使用re中的函数进行详细提取:
'''将内部标签的内容替换为*,以便下一步拆分数据'''token=re.sub('','*',target)'''使用至少1次出现的*作为分割依据''' re.split('\*+',token)
运行结果:
可以看出,列表的第2到第11个元素是我们需要的10个属性的值,
re.split('\*+',token)[1:11]
运行结果:
2.5 第四步:管道全爬虫任务构建
以上,我们已经基本实现了整个任务对某个样本的要求。接下来,我们将网络数据采集的过程应用到所有股票(这里注意,因为股票代码是此刻获取的,其中有一些是2012年6月29日没有上市的股票,即为它生成的URL是无效的。在下面的程序中,我也附上了相应的处理方法,请注意):
importrefrom bs4 importBeautifulSoupfrom urllib.request importurlopen'''设置股票代码文件所在路径'''path='C:\\Users\\windows\\Desktop\\stock\\'
'''读入股票代码文件并逐行拆分成列表'''with open(path+'codes.txt') as c:
code=c.readlines()'''获取干净的股票代码列表'''
对于我 inrange(len(code)):
代码[i]= re.sub('\\n','',code[i])
代码[i]= re.sub('"','',code[i])
htmls=[]'''使用字符串串联生成所有股票对应的目标网址'''
对于我 inrange(len(code)):
htmls.append('#39;+code[i]+'.html?year=2012&season=2')'''使用循环完成所有页面的数据抓取任务'''
'''创建一个数据结构,保存对应的*敏*感*词*。这里使用字典,以股票代码为key,以对应的交易数据为值'''data={}for i inrange(len(code)):'''for 2012 Stocks with 6月29日的交易数据(即抓取过程中出现错误的网页)不会做相应处理'''
try:'''与每个循环中收录的目标网页建立连接并爬回简单网页信息'''html=urlopen(htmls[i])'''简单网页信息的结构分析' ''obj= BeautifulSoup(html,'lxml')'''使用findAll定位目标标签及其属性,并以字符形式返回结果'''text= str(obj.findAll('tr'))'' '使用日期区间作为正则表达式公式规则大致提取内容'''target= re.findall('2012-06-29.*?2012-06-28',text)[0]'''替换内容内部标签的带*为下一步分割数据'''token=re.sub('','*',target)'''分成一个列表,以至少出现一次*为划分依据,返回需要的数据部分'''content= re.split('\*+',token)[1:11]'''保存得到的content入字典'''data[code[i]]=content'''当目标页面不存在June 29, 2012 输入数据时,传入字典对应的值解释错误'''
除异常为 e:
data[code[i]]= '2012 年 6 月 29 日没有数据'
'''打印结果'''
打印(数据)
运行结果:
非常顺利,我们得到了字典形式的目标数据。下面我们通过一些基本的操作将其组织成数据框的形式,并保存为csv文件:
importpandas as pdimportnumpy as npimportre
stock={}for key,value indata.items():if type(value) ==list:for i inrange(len(value)):
value[i]= re.sub(',+','',value[i])
股票[key]=list(map(float,value)) else:passindex=[]
df= [[] for i in range(10)]for key,value instocks.items():
index.append(key)for i inrange(len(value)):
df[i].append(值[i])
D= pd.DataFrame({'股票代码':index,'开盘价':df[0],'最高价':df[1],'最低价':df[2],'收盘价':df [3],'涨跌幅':df[4],'涨跌幅%':df[5],'成交量(手)':df[6],'成交金额(万元)': df[7],'幅度':df[8],'交易率(%)':df[9]})'''设置保存路径'''path='C:\\Users\\windows\ \ Desktop\\stock\\'D.to_csv(path+'海南*敏*感*词*.txt',encoding='ANSI',sep=' ',index=False)
D
生成的txt文件如下:
以上就是本次实战的内容。未来更多的实战会介绍更多的爬虫技能和奇观,敬请期待!
干货内容:SEO最强的营销分析工具---Ahrefs 详解
工人要做好工作,首先要磨利他的工具。. . .
了解一个竞争对手,分析竞争对手在做什么,使用什么方法,采取市场策略,取得什么结果,这些数据显然非常重要!
国外有很多优秀的营销工具。通常,我们在分析独立网站时,我常用的工具有:
和 Ahrefs,我们今天要重点介绍的
这么说来,Ahrefs 几乎是 SEO 的必备工具之一。受到了所有营销人员的好评,公司的市场份额近年来上升非常快,超过了The old Moz、Semrush
Ahrefs 可以帮你分析
这个工具很强大,可惜价格很贵,有99美元、179美元、399美元、999美元(包月)价格区间,如下图
我们自己的使用是 399 美元/月
当然有的人可能会去某宝买,如果能找到合适的,也是可以的
好的,现在我们来分析一下Ahrefs的一些用法和功能点,首先进入首页
在头部的导航栏中,您可以找到以下按钮(在红色框中)
让我们一一分析
改变这是监控
监控什么?
站点浏览器网站分析
站点浏览器是对网站的各种指标的分析,也是我们最常用的地方。我们稍后会详细解释这一点。
内容浏览器
内容挖掘和分享,这个功能和功能很相似,就是分析一个话题,哪个内容最热门,最热门
例如,如果我搜索 关键词 led 灯,
我们可以分析一下这个关键词关于led灯,他们在不同社交媒体上的分享量,分享这个帖子的人,以及这个页面的数据表现(UR,DR…)
这个关于主题和内容的挖掘模块还是很有用的
关键字浏览器关键词挖掘
这个好理解,输入一个关键词,系统会帮你挖掘出相关的关键词建议,以及这个关键词的item的维度分析,比如:
关键词难度、CPC 价格、搜索量、CTR
排名跟踪器
在 Google 搜索引擎上跟踪 网站 排名
现场审核网站监控
进入网站,可以查看网站的套路,分析网站哪里有问题,哪些地方需要改进
您也可以将ahrefs的代码放入机器人文件中,让ahrefs为您的网站做深入分析
接下来,让我们关注Site explorer
这个模块就是我们经常使用的,例如:
页面中间有查询网站的数据概览,如下图:
让我们一一分析
Ahrefs Rank(Ahrefs Rank):这个指标是根据你查询的外部链接的数量来计算的。外部链接的数量越多,在 Ahrefs 中的排名就会越高。
UR(page rating):URL索引,指的是一个网站页面的链接索引有多强。请记住,该指标的评分越高,他在 Google 上的排名就越高。高的。
DR(Site Score):指整个站点的强度。指标越强,网站的权重越高,或者说网站的综合指数越强。
注:UR 和 DR 的评分范围为 1 到 100。
其实这里的UR和DR和我之前写的这个文章“”其实是一个概念和性质,大家可以阅读了解详细
backlinks(反向链接数):所有指向你要查询的网站的反向链接,它们的反向链接之和,反向链接越多,索引越高
引用域(相关 网站):这与反向链接不同。backlink是指所有外部链接的个数,referring是和统计相关的网站(去重)
例如
外链数是1w,但是有一个网站,给我贡献了5k个外链(可能这个网站把我的网站放到了他的首页),然后统一个数来自这 5k 的外部链接,在引用域中,我们只计算一个相关域名
Orangic 关键字(关键词 用于自然搜索):Ahrefs 根据您提供的 网站 链接获取出现在 Google 前 100 名中的所有 关键词。而且这个关键词在不同国家的排名会被重复计算
例如
A 这个关键词美国排名第10,日本排名第15,香港排名第30,那么这个值会被算作3个天赋并叠加
自然流量:此值是 Ahrefs 估计的 网站 月度指标。它是基于 关键词 每月搜索量和 网站 链接在 Google 上的排名的综合指标。
流量值(traffic estimation):这个值是Ahrefs在一个月内可能给所有关键词带来的流量估计值,或者估计值。
下面是一些数值的可视化分析
这方面我主要看竞争对手,外链的增减(哪个国家对他贡献最大),月搜索(流量变化),付费搜索(对方用什么样的CPC文案),以及参赛选手的内容布局
接下来,我们来分析一下左栏中的一些比较重要的指标
首先我们看一下blacklink,这个地方ahrefs会告诉你哪个网站给你做了外部链接,
而通过blacklink,我们可以分析出这个网站使用了哪个锚文本(关键词),这个关键词的链接指向什么(对方在推广哪些页面),甚至这个关键词@网站他的网站是不是wordpress,是不是英文的……可以做一个很详细的指标判断
让我们来看看破碎
坏掉的区域就是说对方指向你的网站链接坏掉了,那么这个区域有什么用呢?我们应该如何使用
broken的用法是给我们找一个外部链接,然后发现对方指向的网站已经down了,然后你给他写信告诉他“嘿,同志,我发现一个你的网站里的链接挂了,我帮你找到了,你的链接内容和我现在写的文章类似,你可以换成我的”
这是Broken link的使用,具体的使用方法,或许你可以看一下这个文章《》
因为反向链接很多,一个一个分析会很累,建议用引用域分析,会更快
热门引用内容也是我最喜欢的功能之一,如下所示:
使用这个功能,我们可以很容易的知道对方的网站在哪里推广,谁推广了他,关键词用了什么,指向了哪些页面。
假设你现在写了一个很好的文章,那么你可以看到这个文章在不同的社交渠道上被分享了多少人
接下来的Organic search(自然搜索),如下图:
可以查看所有关键词竞争对手的搜索量、关键词难度、关键词排名、CPC价格,如下图
运动指的是关键词的历史排名
Top page是指哪些页面带来的流量最多,一个网页在Google上有多少关键词排名,以及这些top page在Google上的排名
竞争领域
你可以根据你提供的网站地址列出谷歌前十名网站
内容差距
在content Gap中输入竞争对手的网站,Ahrefs就可以挑出竞争对手有但你没有的关键词,如下图:
我们来看看Pages区域,如下图
第一个 Best By Links
以上是Best by links,就是找出竞争对手网站的哪些页面表现最好(根据外链数)
Best by link's growth 可以查看哪些页面增长最多(基于外部链接的数量)
热门内容以查看页面上的哪些内容效果最佳
接下来是传出链接区域
首先是Linked domain,也就是查看哪些网站链接指向你的网站,如下图,我们可以分析哪些网站指向你身边,它们的权重如何这
链接域是您的竞争对手的 网站 在他们的 网站 中,他们的链接指向
断链,和上一个不同,这里的断链是指你的竞争对手在他的页面上的哪些链接是无效的
你可以清楚的分析出你的竞争对手的网站哪些页面down了(当然你也可以分析你自己的)
最后一个模块
付费搜索
PPC关键词:这个很容易理解,就是竞争对手,他们用关键词在谷歌上做广告
你可以清楚地看到这个关键词节目长什么样,搜索量是多少,关键词的难度是多少,CPC的价格,深圳的流量增长。可以做很好的数据观察
热门广告
查看竞争对手如何在Google上编写他们的副本,以及具体链接链接到哪个页面,您可以清楚地分析它
热门着陆页
这个功能是告诉你竞争对手的哪些页面通过广告获得了最多的流量
通过这个数据,我们可以清楚的知道竞争对手,每个页面获得的流量比例是多少,这个页面有多少种形式的广告文案,甚至是这个页面上最受欢迎的关键词,都是可以通过数据来跟踪判断!
我认为 Ahrefs 真的很强大。这个工具几乎收录了你能想象到的关于独立网站的所有数据,更重要的是,Ahrefs 几乎被公认为 SEO 行业中一个伟大的营销工具。
最后但并非最不重要的:
第一:分析竞争对手数据是一项非常非常重要的工作。一定要花更多的时间研究竞争对手的促销策略(你会感觉到的)
第二:毕竟工具只是工具。给你一个判断,你不能给出一个非常准确的数据。您无法获得真正准确的数据,因此不要依赖工具。
第三:还是要做好产品和内容,这是一切的根本
第四:对数据分析敏感,知道策略的重要性,流量打法的重点
第五:你必须知道每个数据之间的逻辑。我觉得系统思考真的很重要
说实话,很多人都说独立网站排名难,或者流量难获取。那个你怎么说?
我真的不能说一定很容易,但不知道为什么,我总有一种感觉,我把时间花在了独立网站上,选择了一个小众市场,研究了市场策略和流量策略。有很多网站以后会有不错的排名和订单
需要多长时间才能见效?
我不知道,但打个比方,你能像我一样继续跑步吗?
我发现我做的每一件事其实都是在坚持两个字,不管是流量、跑步还是写作!
以上~