【爬虫问题】爬取tv.sohu.com的页面, 提取视频相关信息

尝试解决下面的问题

问题: 爬取tv.sohu.com的页面, 提取视频相关信息,不可用爬虫框架完成


何为视频i关信息?属性有哪些?

需求:

    做到最大可能的页面覆盖率
*使用httpClient 模拟获取页面HtmlText源码信息,正则出源码视频URL解析类HtmlText2URLlist.ashx。
正则式:href=\"(.*?)\"
    选择重要的信息进行存储

    选择合适的数据存储方式,便于后续使用

数据库字段 ID、URL、IsSuccess、Title、Isdelete、VideoSize、VideTime、相关需要的视频信息、、、

    可通过参数限制要抓取视频信息的数目
*界面视频信息属性选择

    要用多线程方式完成抓取
*使用多线程去处理 每个URLlist 额对象,解析参数

    反防抓取策略
反爬策略:网页的最下面添加一个JS的异步请求,此异步请求用来减计数器的值,进页面时对IP进行加值,出页面时减值,生成一个差值。 根据我们之前的分析,爬虫不会执行异步JS减值请求。 这样可以从生成的值的大小上判断这个IP是否为爬虫。


    *分布式支持
何为分布式?
    *崩溃后进度恢复
通过日志记录详细进度情况,下次直接读取进度,从上次未执行标记的地方开始执行

星号部分为加分项, 可只给出设计思路

1.递归获取所有去重复url    
  
URL解析类获取list之后使用字典数据类型,将URL作为key值插入,重复不插入。
或者使用list的去重方法,每次list.add()的时候做一个是否存在值的判断。

2.访问所有url,匹配视频信息,写入文本。并记录未成功访问的url。并记录url位置数,可以每次成功爬完当前页面后更新该值。

为文本数据结构为:
URL + 空格 +  成功标记0或1  + URL视频页面相关信息1 + 相关信息2 、、、、
不建议计入文本,最好写入数据库,使用一个布尔类型的字段作为是否成功的标记。

3. 检测访问失败的url,看是url爬取不规范或是js或是服务器反爬策略。

待定 反爬策略?有哪些,比如需要模拟HTTP的请求头或者COOKIE值等策略。对其进行模拟添加。

4.使用堆及多线程。

多线程爬取视频详细信息同上。

5.分布式,可1和4同步执行

获取URL的程序将获取的地址写入文本文件,爬取程序从该文本文件中读取数据并进行爬取操作。两个程序可以同时进行。

 

posted @ 2016-11-11 18:13  李0539  阅读(2013)  评论(0编辑  收藏  举报