网络爬虫采集数据几个问题

最近在做网络爬虫抓取数据,遇到几个重要问题,记录下来,以免忘记。

目前用的是第三方开源爬虫框架webmagic,所以暂时记录下来的不是爬虫实现和结构上的问题,而主要是在此框架上的逻辑开发问题。

1.要采集的数据在不同的页面上

        比如,采集网站http://down.7po.com/上的应用,在应用列表页面有应用的id等信息,而此应用的详细页面没有列表页面的这些字段信息,那么就要从列表页面和详细页面中取出字段然后再合成一个应用的整体数据。对这个问题,比较直接的思路是,可以将先取出的一部分数据存放在自定义实体,存入数据缓存(比如redis内存数据库),取到另一部分数据时从缓存中读取匹配,并入实体中。

2.页面元素的抽取和数据的筛选过滤

要抽取页面上的标签元素常使用xpath,css选择器,正则表达式进行抽取。对标签内的数据的筛选过滤可用正则表达式,一些对字符串的操作工具(比如google guava的CharMatcher类,Splitter类等)筛选。使用正则会看起来更美观些。期间我遇到情况有:信息藏在利用工具获取的xpath节点的父节点、信息做了简单防抓取截断甚至js等处理……这些情况可以仔细分析网页源码加以针对解决。

3.html返回后通过js动态获取数据,造成爬取不到目标数据(前端渲染页面问题)

对于这个问题,webmagic官方文档中提出了两种思路:(具体可参考webmagic框架中的这个问题的说明和处理http://webmagic.io/docs/zh/posts/chx-cases/js-render-page.html)

  1. 在抓取阶段,在爬虫中内置一个浏览器内核,执行js渲染页面后,再抓取。这方面对应的工具有SeleniumHtmlUnit或者PhantomJs。但是这些工具都存在一定的效率问题,同时也不是那么稳定。好处是编写规则同静态页面一样。
  2. 因为js渲染页面的数据也是从后端拿到,而且基本上都是AJAX获取,所以分析AJAX请求,找到对应数据的请求,也是比较可行的做法。而且相对于页面样式,这种接口变化可能性更小。缺点就是找到这个请求,并进行模拟,是一个相对困难的过程,也需要相对多的分析经验。
时间: 2024-08-07 00:13:26

网络爬虫采集数据几个问题的相关文章

05 Python网络爬虫的数据解析方式

一.爬虫数据解析的流程 1.指定url 2.基于requests模块发起请求 3.获取响应中的数据 4.数据解析 5.进行持久化存储 二.解析方法 (1)正则解析 (2)bs4解析 (3)xpath解析 1. 正则解析 常用正则表达式 1 单字符: 2 . : 除换行以外所有字符 3 [] :[aoe] [a-w] 匹配集合中任意一个字符 4 \d :数字 [0-9] 5 \D : 非数字 6 \w :数字.字母.下划线.中文 7 \W : 非\w 8 \s :所有的空白字符包,括空格.制表符.

python网络爬虫-采集整个网站

42Ey医课8拿aqg伪涣dhttp://t.docin.com/jjk2195 姥1池79辖习1滦XNDhttp://shequ.docin.com/sina_6267159839 qc4坦刈沤参7RHX酝脸http://www.docin.com/app/user/userinfo?userid=179006118 屑撑m准岗3窖KAQ强http://shufang.docin.com/sina_6370748529 837L1匠631U到9http://tushu.docin.com/kw

入门须知之网络爬虫的基本流程及抓取策略

大数据时代下,数据采集推动着数据分析,数据分析推动发展.但是在这个过程中会出现很多问题.拿最简单最基础的爬虫采集数据为例,过程中就会面临,IP被封,爬取受限.违法操作等多种问题,所以在爬去数据之前,一定要了解好预爬网站是否涉及违法操作,找到合适的代理IP访问网站等一系列问题. 掌握爬虫技术也成为现在技术流的营销推广人员必须掌握的.爬虫入门,这些知识你必须了解. 一.网络爬虫的基本工作流程如下: 1.首先选取一部分精心挑选的种子URL:2.将这些URL放入待抓取URL队列:3.从待抓取URL队列中

Python3网络爬虫(十一):爬虫黑科技之让你的爬虫程序更像人类用户的行为(代理IP池等)

原文链接: Jack-Cui,http://blog.csdn.net/c406495762 运行平台: Windows Python版本: Python3.x IDE: Sublime text3 1 前言 近期,有些朋友问我一些关于如何应对反爬虫的问题.由于好多朋友都在问,因此决定写一篇此类的博客.把我知道的一些方法,分享给大家.博主属于小菜级别,玩爬虫也完全是处于兴趣爱好,如有不足之处,还望指正. 在互联网上进行自动数据采集(抓取)这件事和互联网存在的时间差不多一样长.今天大众好像更倾向于

什么是网络爬虫?有什么用?怎么爬?一篇文章带你领略python爬虫的魅力

网络爬虫也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理.在大数据时代,信息的采集是一项重要的工作,如果单纯靠人力进行信息采集,不仅低效繁琐,搜集的成本也会提高. 此时,我们可以使用网络爬虫对数据信息进行自动采集,比如应用于搜索引擎中对站点进行爬取收录,应用于数据分析与挖掘中对数据进行采集,应用于金融分析中对金融数据进行采集,除此之外,还可以将网络爬虫应用于舆情监测与分析.目标客户数据的收集等各个领域. 当然,要学习网络爬虫开发,首先需要认识网络爬虫,本文将带领大家一起认识

网络爬虫的盗之有道

'''一 爬虫网络的尺寸:1 小规模,数据量小,爬取速度不敏感:利用Request库爬取网页和玩转网页2 中规模:数据规模较大,爬取速度敏感:可以利用scrapy库爬取网站或者爬取系列网站3 大规模,搜索引擎爬取速度关键,主要是通过定制开发,而不是某一个库就可以完成的,可以用于爬取全网二 爬虫网络的骚扰:受限于编写水平和目的,网络爬虫将会为web服务器带来巨大的资源开销 三 网络爬虫具有的风险:网络爬虫的法律风险 :1 服务器上的数据有产权归属2 网络爬虫获取数据后牟利将带来法律风险网络爬虫泄漏

Android实战——jsoup实现网络爬虫,糗事百科项目的起步

Android实战--jsoup实现网络爬虫,爬糗事百科主界面 本篇文章包括以下内容: 前言 jsoup的简介 jsoup的配置 jsoup的使用 结语 前言 对于Android初学者想要做项目时,最大的烦恼是什么?毫无疑问是数据源的缺乏,当然可以选择第三方接口提供数据,也可以使用网络爬虫获取数据,这样就不用第三方数据作为支持.本来是打算爬一些购物网站的数据,由于他们的反爬做得好,所以没办法爬到数据,只能爬取糗事百科的数据,或许聪明的你会想到可以高仿个糗事百科作为自己的练手项目,利用jsoup是

网络爬虫的乱码处理

原文地址:http://www.cnblogs.com/agileblog/p/3615250.html 关于爬虫乱码有很多群友的各式各样的问题,下边简单总结下关于网络爬虫的乱码处理.注意,这里不仅是中文乱码,还包括一些如日文.韩文 .俄文.藏文之类的乱码处理,因为他们的解决方式 是一致的,故在此统一说明. 网络爬虫,有两种选择,一是选择nutch.hetriex,二是自写爬虫,两者在处理乱码时,原理是一致的,但前者处理乱码时,要看懂源码后进行修改才可以,所以要废劲一些:而后者更自由方便,可以在

网络爬虫环境配置之的模块安装

要利用网络爬虫进行数据的选取,我们首先应该进行环境的配置 所需工具:pycharm item2 首先进行wget的安装下载:wget是一个从网络上自动下载文件的自由工具,要下载安装wget我们首先进行homebrew的安装 安装brew:ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 安装成功后如图 A. 安装wget:brew install wget