网页数据抓取软件(闲人日记:如何获取交叉熵函数的开发者工具?(上) )
优采云 发布时间: 2021-09-09 03:11网页数据抓取软件(闲人日记:如何获取交叉熵函数的开发者工具?(上)
)
懒人日记
时间:2021 年 3 月 9 日
这上来明明是闲置的,还没更新!怎么说呢,不想做,总能找到很多理由。毕竟,“不想做”就是“不想做”。废话少说,进入正题。
打开网站主页进行实验。可以看到网页上有一个非常明显的表格。这个表是文章看到别人写交叉熵函数时移动的数据。接下来我们将尝试使用Python获取如下数据,并使用不同色块的类属性作为行索引。
只看一条数据。
接下来F12打开浏览器的开发者工具。我们先来看看网页的源代码。这可以帮助我们分析事后如何处理数据。但是在开始之前,笔者首先要说的是,编写爬虫没有固定的、具体的方法,必须“具体情况具体分析”!很多时候我们面对的需求是不同的,有些网站不能使用下面的方法获取数据(获取的方法会有很大的不同),这些都需要很多具体的经验,以及具体的处理问题。经验的经验。 . .
点击元素选择工具,点击目标元素,查看器跳转到目标元素的代码。见图一。
*敏*感*词*一
我们来看看元素之间的“父子关系”!左边的“代”比较大,其中,在图2这个...里面是我们要获取数据的目标表的源代码,我们发现只有这个表出现了在整个网页中。 class=table table-hover 参数类的属性值,这将是脚本找到这个 table 对象的重要依据。
*敏*感*词*二
为了演示方便,只列出了tbody的6个tr。
好的,我们接下来开始工作。首先,我们要先安装一些爬虫相关的库或模块。如果没有安装,可以在cmd中输入命令安装:pip install requests beautifulsoup4 pandas(requests和beautifulsoup4、pandas也安装了)。安装成功后,我们进入下一步。打开 Jupyther Notebook,这是数据科学中常用的 Python 集成开发环境。如果使用Python的IDLE工具,最好一行一行的输入命令,否则容易报错。
分别导入请求和beautifulsoup4、pandas:
对于网络请求,部分网站必须带头发送,否则无法获取。
输入response.text,你会发现所有的汉字都变成了乱码。这时候就需要转换编码了。查看输出编码:
响应文本
一般我们只需要将编码转换为utf-8即可解决中文乱码:
或输入以下代码:
处理编码问题后
可以看出还是比较乱的,和真正的源码不太一样。 “\r”表示当前位置返回到开头,“\n”表示换行,“\t”表示跳到下一个制表符位置。因此,创建一个 bs4.BeautifulSoup 类型的对象:
将文本转换为源代码
BeautifulSoup 模块使响应文本更加规则。
找到变量soup中第一个属性类为“table table-hover”且标签为table的代码块:
...代码块
获取tbody中所有tr标签的代码块:
全部在 tbody...
代码块列表
处理成需求数据的结构(警告!下面有很多图帮你解读代码):
列
列
因为 attrs['class'] 返回一个列表
提取list对象中的字符串(否则tbody_id不能作为索引)
主题数据
将列表数据转换为pandas DataFrame类型数据
数据表
请根据自己的需要设计。这几乎是结束了。如果要将数据表导出为Excel表格,只需要使用pandas的to_excel()函数即可。
背后的故事
18年,作者和数学建模的小伙伴遇到一个课题,需要采集大量足球彩票网站数据进行数据分析。那时我们用的是matlab,对互联网技术或编程了解不多。水平也有待提高。所以我用了最慢的方法,一页一页地采集页面。可以说是慢到让人吐血。那是我第一次通宵工作。如果你现在看,你有更多的选择。
后记
作者在百度经验中遇到很多墙,文章一直发不上来,一直被告知踩到了“雷区”进行修改。几个小时后,更改无法通过,这令人费解。最后不得不放弃。之前微信公众号上发的内容没人看,虽然只是比较基础的内容,自然会和别人的代码有很多相似之处。但无论如何,我在我的网站上爬取数据,而网站只用于各种实验。
今天突然发现b站的专栏增加了一些作者和其他朋友之前一直在说的功能,有点惊喜!我爱小破站(poyin)。