`
rcfalcon
  • 浏览: 228099 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用python进行分布式网页数据抓取(二)—— 核心问题讨论

 
阅读更多

数据匹配

首先先研究最关键的数据抓取。从形式各异的数据中将内容“扒”下来。

当然得依赖我们的强力工具 正则表达式了(个人觉得基于DOM树分析很麻烦,很不灵活)

分析了几个BOKECC页面后,总结如下:

1. 各页面有一定差别,可能是基于不同版本。HTML写的很不正规,基于HTML标签来匹配肯定不合适。

2. 页面带动态内容,需要分析,模拟AJAX去请求。

在基于HTML源码的数据爬取中,如果单纯的想基于HTML标签做挖掘,肯定正确率很低。还是需要返璞归真,人怎么看的,就怎么挖。

于是我大多是采用基于页面视觉(比如文字、或者区域)的匹配方法。将一些不太重要的HTML标签过滤掉。然后进行数据匹配。

这里用到了python的re模块。

先写了写几个程序用来测试,测试了来自20个不同网站的页面,基本能够抓取正确。

接下来说说AJAX内容。

为什么动态内容需要模拟AJAX请求呢?

因为你以HTTP流的方式去获取网页内容,是不带动态打出的内容的。(比如div标签里是空的),但是当你以浏览器的形式去访问,能够看到数据,这是因为浏览器的javascript引擎执行了其中的JS代码,去异步请求数据,动态打出在页面上。

WEB接口

每个节点需要暴露WEB接口,在上一篇的设计中,我提到了SOAP协议。实际实现的时候,在此系统中我们还是使用的基于HTTP GET的接口。(编码比较简单,:D),为了方便部署、也为了体现python一切都那么简单的原则,我没有使用apache等知名Web服务器,而是使用了python的BaseHTTPServer模块。重载 do_GET方法来实现我们的WEB接口暴露。

为什么WEB接口需要设计同步和异步两种返回?由于我们的分布式节点是基于任务形式的,所以我们节点任务逻辑反馈包括2步:

1. 确认任务收到

2. 任务完成回调

这样控制者方面的程序就很好编写了:对于所有的节点发送任务,同时附带任务号,在节点同步反馈接收任务后,等待,若某节点任务回调了,则认为该节点闲置,再分配任务。。。(当然,实际情况可能每个节点是多线程跑的,还可以由节点、或者控制者来维护一个任务队列和线程池)

异步如何实现?

起线程。(当然你也可以管理线程池,我这儿就没管这么多了)

数据库操作

没啥好说的,我这用的MYSQL,直接SQL语句。简单明了。

如何部署?

由于我这只有在WINDOWS平台部署的需求,所以我用py2exe打成EXE包发布。

若想实现自动化部署也很简单,自己在每个节点上写个“后门”,可以统一调度所有机器的后门即可。(控制其下载、重启)

分享到:
评论

相关推荐

    基于Python的分布式多主题网络爬虫的研究与设计.pdf

    应用前景与挑战:基于Python的分布式多主题网络爬虫可应用到多个检索领域,但由于网络爬虫抓取过程中遇到的异常问题,如程序错误、系统死机、网页编码不规范等,还需进行优化以进一步提高爬虫的抓取效率和数据处理...

    python抓取高德POI数据,突破数据量限制

    本文将深入探讨如何利用Python抓取高德地图的POI数据,并解决数据量限制的问题。通过提供的文件`GetAmapPOIbyPolygon.py`,我们可以看到一个Python脚本,它用于获取高德地图在特定区域内的POI数据。 首先,`...

    Python爬虫入门教程-大规模网页抓取-分布式爬虫

    Python爬虫入门教程-大规模网页抓取-分布式爬虫 另外如果说知识体系里的每一个知识点是图里的点,依赖关系是边的话,那么这个图一定不是一个有向无环图。因为学习A的经验可以帮助你学习B。因此,你不需要学习怎么样...

    基于Python Scrapy爬虫框架实现的链家二手房数据爬取系统的设计与实现 毕业设计论文答辩用 1万+字 共41页.docx

    - **Scrapy爬虫框架**:Scrapy是一个用于Web抓取的强大Python框架,它可以高效地抓取网页数据,并支持多线程爬取。本项目利用Scrapy来开发爬虫逻辑,包括网页请求、响应处理以及数据解析等功能。 - **XPath网页提取...

    基于Python的合肥市二手房信息爬取与数据分析.pdf

    14. 数据分析的成果展示:使用Jupyter Notebook编辑器进行数据分析,并采用Python3程序来开展描述性统计分析和可视化工作,以得到有用的分析结果。 以上所述的知识点,涵盖了从网络爬虫的设计、数据的抓取与预处理...

    毕业设计——疫情大数据分析Python爬取数据,Springboot+MySQL+hadoop

    在本项目中,SpringBoot作为后端服务的核心,负责接收前端请求,处理Python爬虫爬取的数据,将数据存储到MySQL数据库,同时也可以提供API接口供前端调用,展示数据分析结果。 MySQL作为关系型数据库,被用来持久化...

    抓取百度搜索结果——解密百度狗

    标题“抓取百度搜索结果——解密百度狗”所涉及的知识点主要集中在网络爬虫技术和搜索引擎的工作原理上。网络爬虫是一种自动获取网页信息的程序,它通过模拟浏览器的行为,发送HTTP请求到服务器,接收服务器返回的...

    《虫术Python绝技》_梁睿坤.zip

    《虫术Python绝技》是梁睿坤先生关于Python爬虫技术的一本深入解析书籍,旨在教授读者如何高效地利用Python进行网络数据抓取。在当今大数据时代,网络爬虫作为获取海量信息的重要手段,其重要性不言而喻。本书以...

    Python网络爬虫实习报告.pdf

    Python网络爬虫能够高效、系统地抓取大量网页数据,为数据分析、市场研究、竞争情报提供支持。因此,掌握网络爬虫技术对于IT从业者来说具有很高的实用价值。 二、爬虫原理 网络爬虫通常包含以下几个步骤: 1. 发送...

    实用文档之Python网络爬虫实习报告-python实习报告.pdf

    二是聚焦爬虫,针对特定主题进行有目标的数据抓取。 **四、常用爬虫框架比较** 1. **Scrapy框架**:提供了一整套解决方案,包括爬虫、中间件、调度器等,适合大规模数据抓取和复杂任务,支持异步操作。 2. **...

    python1903笔记 12-spider.zip

    Python1903笔记中的"12-spider"部分,主要涵盖了如何构建和使用Python爬虫进行网络数据抓取的相关知识。本文将详细阐述Python爬虫的基础概念、工作原理以及常用的技术和库,旨在帮助读者全面了解和掌握Python爬虫的...

    Python Web Scraping Second Edition - Fetching Data From The Web

    ### Python Web Scraping 第二版 —— 从网络获取数据 #### 书籍概述与目标读者 《Python Web Scraping 第二版》是一本专为熟悉Python编程语言的程序员、安全专家以及网站管理员编写的实用指南。本书旨在教授读者...

    基于Python的天猫商品爬虫技术.pdf

    3. 数据解析:通过请求和解析页面,爬虫能够抓取到商品名称、价格、月销量等关键信息,并根据需求对数据进行进一步的结构化处理。 五、网络爬虫技术的未来发展方向和挑战 1. 分布式爬虫:未来爬虫技术的发展方向之...

    Python网络爬虫讲义201808.doc

    本讲义不仅涵盖了基础的爬虫概念和实现,还针对网络爬虫可能遇到的问题和解决方案进行了详细阐述。通过实际案例,如豆瓣、猫眼电影和今日头条等网站的数据抓取,来展示爬虫技术的应用。然而,由于网站不断更新,部分...

    comcrawl-downloader:通用抓取数据的分布式下载脚本

    总结,`comcrawl-downloader` 是一款强大的分布式数据下载工具,利用Python编程语言和分布式系统原理,帮助用户高效地抓取和下载大规模网络数据,适用于各种需要大量数据处理的项目。其易用性、灵活性和高效率使得它...

    Python-爬虫-学习代码(学习使用)【Python爬虫练手项目】

    4. **异常处理与数据存储**:在爬虫开发中,经常会遇到如网络连接错误、编码问题、网页结构变化等情况,因此要学会使用try-except进行异常处理。数据存储方面,可以将爬取的数据保存为CSV、JSON、数据库(如SQLite、...

    分布式微博爬虫-爬虫python代码

    实现内容包括用户信息、用户主页所有微博、微博搜索...——学习参考资料:仅用于个人学习使用! 本代码仅作学习交流,切勿用于商业用途,否则后果自负。若涉及侵权,请联系,会尽快处理! 未进行详尽测试,请自行调试!

    基于Python爬虫和HDFS的招聘信息采集与存储系统.zip

    本项目——“基于Python爬虫和Hadoop分布式文件系统(HDFS)的招聘信息采集与存储系统”,旨在利用Python爬虫技术获取网络上的招聘信息,并通过HDFS进行高效、安全的数据存储,为人力资源管理和数据分析提供有力支持...

    python题目-100.zip

    Python爬虫是Python应用的一个重要领域,它允许程序员自动抓取互联网上的数据,用于数据分析、市场研究、搜索引擎优化等。Python有许多流行的爬虫库,如BeautifulSoup、Scrapy、Requests和PyQuery等,它们简化了网页...

    Python网络爬虫实习报告-python实习报告.docx

    - **爬虫(Web Crawler)**:是一种自动抓取万维网上网页的程序或脚本,通常用于获取大量结构化的数据。 - **URL(Uniform Resource Locator)**:统一资源定位符,用来唯一标识一个网页。 - **HTTP(Hypertext ...

Global site tag (gtag.js) - Google Analytics