`

Python3做采集

阅读更多

出于某些目的,需要在网上爬一些数据。考虑到Python有各种各样的库,以前想试试Pycharm这个IDE,就决定用它了。首先翻完《深入Python3》这本书,了解了它的语法之类的。下面就以下载http://www.meinv68.cn/为例子开始干活了:

  1. Http协议的实现。那本书里有介绍一个叫httplib2的库,看起来挺好。就用这个库把网页内容抓下来先。
  2. Html解析。之前有用过一些解析xml的库,但是想着html代码可能不会太严禁,就找到了一个传说中对html容错度很高的库:BeautifulSoup。Python3得用这个库的第四版,导入时也是要导「bs4」库。解析挺简单,我用的基本还是xml那一套。
  3. 数据保存。呃,没啥说的,就是用内建方法open()打开一个文件,会返回一个文件对象,然后调用它的各种方法就可以了。

采集的有点慢。需要采集的数据有三十多万条。但是一个页面只有十条数据,而且每三四秒左右才能从服务器抓到一个页面。刚开始想着用多线程之类的加速,但想着抓一次就好了,而且有人鄙视说,抓太快对服务器负担太大,就让它跑了个通宵。只抓了十万条数据,而且还有漏的。

 

然后就找到另外一个网站,继续抓。这个时候蛋疼了,那网页里的内容大部分都是js之类生成的。第一反应就是看看有没人用Python实现一个js的解释器。结果发现这个工具量太大,很多库都必须依靠浏览器来解析,太重量级。先放一放,就先看看这个js里有些啥,会不会直接有需要的数据。

以前没有网页开发的经验,只是问过同学什么js,asp语言是干嘛用的。但是Firefox很久之前就装了FireBug这个插件,就拿出来随便点点。很容易看到了加载的js,但是看了半天没发现有想要的东西。然后继续随便点点,发现加载的不只一个脚本,最后在控制台里,发现Get了一个aspx文件,里面就有想要的数据。

QQ截图20130731143612

 

下面继续是Python的事了:

  1. 瞄了下那个url里,有关于日期的参数。首先很纯洁的想到我需要一个能处理日期的类。嗯,我也找到了,datetime。这货能很方便的处理关于 「时间」的功能,比如一个时间的前一天,前一秒是什么时候,计算两个时间相差多少等等,而完全不用考虑类似润年哇,加了几小时后就成了另外一天之类的问题。也能很方便的把日期用字符串按指定的格式打印出来。
  2. 抓到这里面的文件后,需要进行分析。就简单的用正则表达式了。用到的库是re。呃,用法也很简单,可以先用编译一个正则表达式,然后可以查看一个字符串能不能被这个正则表达式匹配,返回匹配部分等等。

因为这个脚本很小,比起抓整个网页来说,效率好太多了,一秒钟左右抓一个页面,而且一个页面大概有170条数据。跑了二十分钟左右就抓完了。

 

后:

以前用C++这样的静态类型语言,一个表达式的值,一个函数的返回值只能是一种类型。但是Python则不同,比如open()会根据你打开模式返回不同的类型的对象。虽然说C++的parser做起来很难,但是只要做出来,就能很容器确定一个变量的类型(模板中的除外,所以C++11放弃Concept的时候还是略让人蛋疼的),然后IDE就能进行很好的自动补全建议。但是动态类型语言这方面则略为蛋疼了,对IDE要求高了一点。好处则是很方便灵活,写函数里也不怎么纠结参数的实际类型,全特么是模板参数……好在PyCharm能根据一个函数的docstring判断参数的类型。

还有就是Python里对机器的控制弱了点。因为数据量有点大,所以不得不关心了下list的实现。它类似C++ stl里的vector,但是又没有提供设置容量的方法。现在就用collection.deque将就了一下。

 
 
 
 
 
分享到:
评论

相关推荐

    Python实时采集本机摄像头视频

    Python实时采集本机摄像头视频 Python实时采集本机摄像头视频 Python实时采集本机摄像头视频 Python实时采集本机摄像头视频 Python实时采集本机摄像头视频 Python实时采集本机摄像头视频 Python实时采集本机摄像头...

    Python网络数据采集 - 2016.pdf

    根据给定文件信息,本节将详细介绍关于Python网络数据采集的知识点。 Python网络数据采集是应用Python编程语言进行网页内容的提取和数据抓取的过程。它广泛应用于数据分析、市场研究、新闻采集以及各种自动化应用中...

    python网络数据采集 完整版 pdf

    《Python网络数据采集》是一本全面介绍如何使用Python进行网络数据采集的书籍,它涵盖了从基础知识到高级技术的完整教程。这本书旨在帮助读者理解并掌握网络数据采集的各个环节,包括网页结构解析、HTTP协议、爬虫...

    Python网络数据采集.tar.gz_python_数据_采集

    python网络数据采集,非常有利于网络数据采集的应用

    python网络数据采集_经典实例(高清含书签源码)

    Python网络数据采集是一种重要的技能,尤其在大数据时代,获取网络上的信息成为了许多分析和研究的基础。本书《Python网络数据采集》提供了丰富的实例,旨在帮助读者深入理解和掌握这门技术。 首先,我们要理解...

    Python视频采集显示

    基于Python的实时视频采集,源代码,每一段都附详尽注释,用户可根据注释自行开发

    基于Python 的信息采集系统的分析与设计.pdf

    基于Python的信息采集系统的分析与设计 Python作为一种高效、灵活的编程语言,在信息采集系统中发挥着重要作用。基于Python的信息采集系统可以对网络爬虫进行设计和分析,提高信息采集效率,满足用户需求。本文将...

    python 网络数据采集 mobi格式

    python 网络数据采集,运用python3.x进行网络爬虫相关的自动化操作,可以大大简化网络上相关的重复的工作

    python网页采集工具

    在实际应用中,Python采集工具通常包括以下步骤: 1. 发送HTTP请求:使用`Requests`库向目标URL发送GET或POST请求,获取网页内容。 2. 解析HTML:使用`BeautifulSoup`等库解析HTML响应,找到目标数据所在的元素。 3....

    Python3网络爬虫数据采集

    资源名称:Python3网络爬虫数据采集资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    Python微博数据采集.mp4

    Python微博数据采集.mp4

    python网络数据采集(代码)

    6. **数据存储**:采集到的数据通常需要保存,Python提供了多种数据存储方式,如CSV(`csv`模块)、JSON(`json`模块)、数据库(如SQLite、MySQL,使用`sqlite3`或`pymysql`库)等。 7. **代理与IP更换**:为避免...

    python网络数据采集

    Python作为一门功能强大且易学的语言,为网络数据采集提供了丰富的工具和库。本篇文章将详细探讨Python中的requests库、urllib库以及Scrapy框架在进行网络数据采集时的应用。 首先,我们来看requests库。它是Python...

    基于python的图像采集器开发.pdf

    ### Python图像采集器开发知识点详细说明 #### 1. Python语言特点及其应用背景 Python是一种广泛使用的高级编程语言,特别适用于Web开发,NASA使用它开发了CAD/CAE/PDM资源库和下一代工程协作环境。Python还被用于...

    Python网络_数据采集

    8. **数据存储**:采集到的数据需要存储,Python的`csv`、`json`库可用于简单格式的数据,而对于大规模数据,可以使用`pandas`配合`sqlite3`或`MySQL`等数据库进行存储。 9. **异常处理和日志记录**:在编写爬虫时...

    基于Python+QT开发的Modbus采集软件+源码+软件使用说明(毕业设计&课程设计&项目开发)

    基于Python+QT开发的Modbus采集软件+源码+软件使用说明,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于Python+QT开发的Modbus采集软件+源码+软件使用说明,...

Global site tag (gtag.js) - Google Analytics