抓取网页数据违法吗(篇:详解stata爬虫抓取网页上的数据part1)

优采云 发布时间: 2021-09-15 05:10

  抓取网页数据违法吗(篇:详解stata爬虫抓取网页上的数据part1)

  续自第1部分:Stata crawler在网页上捕获数据的详细说明第1部分

  Do文件和相关文件链接:密码:40uq

  如果链接失败,请发送一封私人信件,您将回复。多谢各位

  让我们开始捕获1000个网页的源代码,它们是temp1.txt-temp1000.Txt保存在e盘的2文件夹中,再次使用“merge.Bat”将1000个Txt文件合并成一个文件all.Txt。首先将命令放在这里,并在下面逐一解释:

  注意:第一行上的本地命令必须与以下两个循环一起运行,否则将提示错误。原因解释如下

  

  抓取1000个网页源代码并合并它们

  使用local命令生成一个临时变量n=\un(注意:在Stata中,nand是具有固定含义的默认变量,它表示观察值的数量,这里当然等于1000,表示从1到1000。要理解这两种情况,可以使用Gen n=\n,Gen n=\n,然后浏览查看n和n之间的差异),但本地命令生成的变量n不会显示在变量窗口中,它临时存储在Stata的内存中,必要时可以调用。下面是一个小示例,演示本地命令的作用(请注意,必须同时运行本地命令行和调用本地生成的变量的下一行,否则将提示错误,因为本地宏命令生成的变量只是临时的。一旦遇到do文件结尾[观察Stata主界面,每个命令运行后都会提示do文件结束]生成的临时变量将被删除,不能再次调用,见下图官方英文解释,图中已用蓝色标记,特别是最后一句):

  

  本地命令演示和比较\un和\un差异

  有关Marco宏的进一步说明,请参阅官方帮助文件中的相关说明,如下所示:

  

  马可·麦克罗的官方解释

  在理解了local之后,接下来的两个循环就容易多了。第二个循环对应并存储URL变量和purl变量(purl变量是前1000个链接)一个接一个,但不显示在变量窗口中。第三个循环调用URL变量中存储的1000个网址,并复制1000个网页的源代码,它存储在磁盘E的2文件夹中,并命名为temp1.txt-temp1000.Txt,这个过程取决于网络速度,大约需要30分钟。请看数字变化如下图所示,最后temp1000.Txt已完成。之所以提示未找到,是因为我们在grab命令后附加了replace选项,即如果在e盘的文件夹2中找到同名文件,则通知Stata替换该文件,但Stata发现没有同名文件,因此不会提示f如果Stata发现一个同名的文件,它将不会被提示,而是直接替换它

  

  捕获1000个网页源代码的过程

  经过长时间的等待,我们最终使用第1部分中使用的bat batch命令调用DOS,将1000个TXT合并到all.TXT中(这次在文件夹2中处理,这与之前的all.TXT不同).到目前为止,我们已经获得了1000个网页的源代码,这非常重要,因为我们需要的所有GDP信息都收录在其中。类似地,我们使用中缀命令将其读入Stata进行处理。该命令显示在文本开头的图中。由于文本较大,因此最好在阅读之前将其清除文本,否则Stata可能会崩溃。如果写了半天的dofile没有保存,它就坏了(我不知道具体原因,我想可能是内存不足?)

  阅读文本后,它是一个变量V,然后开始过滤和净化。这也是最复杂的工作,因为从总共735748行代码中只需要提取两个信息,一个是“某个地区的多少年”,另一个是“GDP”.根据我们需要的信息,我们寻找收录这两个信息的关键行,并观察这些行的共同特征。通过观察,我们可以看到带有区域名称的行收录这些字符,带有GDP或GDP的行收录“GDP”等字符(如下图所示)因此,我们只需要保留收录这两个字符的代码行

  

  观察代码行的特征并找出规则

  步骤1:设置两个指标变量(虚拟变量形式的虚拟变量)a和B。对于一个变量,如果V变量(即所有代码行所在的变量)收录,则让Stata返回值1,表示“是”,否则返回0,表示“否”。同样,B变量与“国内生产总值”一起生成作为指示符。那么,如果a==1,则keep | B==1意味着保留收录或收录“GDP”的行。此步骤快速过滤代码行数,使其仅为4570行

  

  生成两个指标变量

  第2步-第n步:都是切割、保留、切割、保留、切割、保留…因为处理方法可能不同。My不一定是最好的,但原理是一样的。因此,只解释了使用的一些命令和功能。请参阅do文件中的相关注释[strpos,duplicates drop]

  

  切割和更换

  

  继续切割、更换和固定

  

  最终数据

  可以看出,有些数据前面有一些乱七八糟的字符,这是由于每个公告的书写格式不一致造成的,需要继续处理,方法同上,拆分、替换、保留,这里没有进一步的演示,有兴趣的可以继续

  随机查找多个数据进行网站查询,查看对应数据是否准确,比如我在上图左右随机选择了2015年合肥、2013年九江进行验证,查询结果如下,验证准确:

  

  查询验证结果

  最后,对于空缺部分,您可以网站单独查找数据进行填充。此外,本次到期的数据为1000行,但最终获得的数据为1015行。原因可能是公告的格式不完全统一,部分数据为本省GDP(较少),有些是城市的GDP,因此存在重复部分。这些错误必须根据研究人员的需要进行处理

  好了,这一章的详细讲解到此结束。洒些花吧!(0.0))@

  最后提示:Stata12、13白色主界面默认不支持中文,中文显示为乱码,您可以在主界面的任意位置右键点击>首选项,然后将配色方案模式由标准改为经典,正常显示中文

  

  标准->经典

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线