Atitit.网页爬虫的架构总结

1. 总数的结构..(接口方法) 1

2. 获得页数 1

3. 跳页处理(接口方法) 2

4. 单个的页面处理(接口方法) 2

4.1. 获得页面url 3

4.2. 获得页面html 3

4.3. 获得list 3

4.4. 处理单个的数据条目 3

5. 调用 4

6. 日志的实现 4

7. 参考 4

1. 总数的结构..(接口方法)

public String exec( ) throws IOException     {

fx=new filex(fileName);

int pages=getpage();

for(int i=1;i<=pages;i++)

{

if(i<pageStart)

continue;

try {

singlePage(i);

} catch (Exception e) {

e.printStackTrace();

}

}

fx.close();

2. 获得页数

getpage();

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

3. 跳页处理(接口方法)

if(i<pageStart)

continue;

4. 单个的页面处理(接口方法)

*/

private void singlePage(int page) throws ConnEx, NoRztEx, ParseLsitEx {

String html = null;

try {

String api = (String) getCurPageUrl(page);

//http://www.czvv.com/k5bu6562Rp0c0cc0s0m0e0f0d0.html

websitex wc = new websitex();

wc.refer="

html = wc.WebpageContent(api, "utf-8", 15);

}   catch (Exception e) {

e.printStackTrace();

throw new ConnEx(e.getMessage());

}

//================trace

if (new File("C:\\traceOk").exists())

filex.save_safe(html, "c:\\rztTrace.html");

List li=getList(html);

for(Object obj:li)

{

try {

processItem(obj);

} catch (Exception e) {

e.printStackTrace();

}

}

4.1. 获得页面url

4.2. 获得页面html

4.3. 获得list

private List getList(String html) throws NoRztEx, ParseLsitEx {

try {

Document doc = null;

doc = Jsoup.parse(html);

Elements tabs = doc.getElementsByTag("ol");

return tabs;

} catch (Exception e) {

e.printStackTrace();

//System.out.println("norzt:" + addr);

throw new ParseLsitEx("noRzt");

}

4.4.  处理单个的数据条目

private void processItem(Object obj) {

Element item=(Element) obj;

String name=item.getElementsByClass("resultName").get(0).text();

Element e=  item.getElementsByClass("l_r").get(0);

String tel=e.child(0).text();

String lyesyiren=e.child(1).text();

String addr=e.child(2).text();

String line = name+","+tel+","+lyesyiren+","+addr;

fx.appendLine_flush_safe(line);

System.out.println( line);

}

5. 调用

WebInfoX x=new WebInfoX();

x.fileName=args[0];// "c:\\r2.csv";

x.pages=Integer.parseInt(args[1]);

x.pageStart=Integer.parseInt(args[2]);;

x.exec( );

System.out.println("--fi");

}

6. 日志的实现

使用默认的console最简单的..或者使用queue+textarea....麻烦的

7. 参考

paip.c++ qt 网页爬虫 的 网络编程 总结 - attilax的专栏 - 博客频道 - CSDN.NET.htm

Atitit.网页爬虫的架构总结相关推荐

  1. python爬虫流程-Python爬虫程序架构和运行流程原理解析

    1 前言 Python开发网络爬虫获取网页数据的基本流程为: 发起请求 通过URL向服务器发起request请求,请求可以包含额外的header信息. 获取响应内容 服务器正常响应,将会收到一个res ...

  2. Python 网页爬虫 文本处理 科学计算 机器学习 数据挖掘兵器谱 - 数客

    曾经因为NLTK的缘故开始学习Python,之后渐渐成为我工作中的第一辅助脚本语言,虽然开发语言是C/C++,但平时的很多文本数据处理任务都交给了Python.离开腾讯创业后,第一个作品课程图谱也是选 ...

  3. 爬虫那些事-网页爬虫设计思路

    一.前言 爬虫广泛使用于搜索引擎.新闻聚合以及大数据采集当中,一个良好的爬虫系统需要考虑很多方面:爬虫种子的获取需要有个稳定的任务调度机制,下载页面过程需要考虑到网页内容的生成是否是需要js渲染,请求 ...

  4. 如何设计一个网页爬虫

    作为长期深耕在爬虫行业的程序猿来说,对于设计一个网页爬虫想必很简单,下面就是一些有关网页爬虫设计的一些思路,可以过来看一看. 第一步:简述用例与约束条件 把所有需要的东西聚集在一起,审视问题.不停的提 ...

  5. python爬虫数据挖掘_Python网页爬虫文本处理科学计算机器学习数据挖掘兵器谱...

    转载自"我爱自然语言处理":http://www.52nlp.cn,已获得授权.更多内容可见公众号:"牛衣古柳"(ID:Deserts-X). 周末时看到这篇不 ...

  6. Python 网页爬虫 文本处理 科学计算 机器学习 数据挖掘兵器谱

    Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱 2015-04-27 程序猿 程序猿 来自:我爱自然语言处理,www.52nlp. ...

  7. python 静态网页_Python静态网页爬虫相关知识

    想要开发一个简单的Python爬虫案例,并在Python3以上的环境下运行,那么需要掌握哪些知识才能完成一个简单的Python爬虫呢? 爬虫的架构实现 爬虫包括调度器,管理器,解析器,下载器和输出器. ...

  8. 【谷歌推网页爬虫新标准,开源robots.txt解析器】

    https://www.toutiao.com/a1638031116246019 [谷歌推网页爬虫新标准,开源robots.txt解析器] 对于接触过网络爬虫的人来说 robots.txt 绝不陌生 ...

  9. python网页爬虫-python网页爬虫浅析

    Python网页爬虫简介: 有时候我们需要把一个网页的图片copy 下来.通常手工的方式是鼠标右键 save picture as ... python 网页爬虫可以一次性把所有图片copy 下来. ...

  10. python网页爬虫-Python网页爬虫

    曾经因为NLTK的缘故开始学习Python,之后渐渐成为我工作中的第一辅助脚本语言,虽然开发语言是C/C++,但平时的很多文本数据处理任务都交给了Python.离开腾讯创业后,第一个作品课程图谱也是选 ...

最新文章

  1. java reference_java中的4种reference的差别和使用场景(含理论、代码和执行结果)...
  2. matlab单元刚度矩阵整合成整刚,求结构总刚矩阵Matlab源代码
  3. 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 J Beautiful Numbers
  4. excel 科学计数法转换成文本完整显示_避免万次暴击,巧办法解决数字和文本之间的快速转化...
  5. 2003 IIS搭建与配置
  6. 001_汽车之家,新浪和360之间的交流
  7. 用递归调用法求斐波那契函数_进阶版:面试官问你斐波那契数列的时候不要高兴得太早...
  8. android java代码重启,如何在Android中重启服务?
  9. placeholder和assign速度对比
  10. java生成和识别二维码
  11. 如何使用WeKan管理您的工作
  12. java冻结行列,Java 冻结或解除冻结Excel中的行和列的方法
  13. 判断四个点是否可以构成矩形(优雅的解法!!!)
  14. 为什么小程序getUserInfo获取的微信名称是“微信用户“?2.10.4词库之后如何渲染微信名称,微信头像和获取个人信息?
  15. Python3 打印26个英文字母
  16. linux中sed如何替换换行符,linux sed命令,如何替换换行符“\n”
  17. 从身份证号里可以解析出出生地,年月日,性别及年龄
  18. 2.Hadoop3.x 基础知识
  19. 开发、运维、业务都说好的全栈云原生长这样
  20. 大人,时代变了——手游抽卡异军突起

热门文章

  1. axure源文件_Axure函数应用:指示线跟随地图所选区域,并展示相应数据可视化...
  2. C语言 - setjmp与longjmp
  3. Laravel5.3之Container源码解析
  4. ATL ActiveX开发入门
  5. GitHub 实现了子资源完整性(SRI)
  6. 多线程之-并发任务间交换数据
  7. ubuntu终端浏览文件夹
  8. dojo mobile问题汇总
  9. 摘录:java和sql如何判断数据库是否存在
  10. 警告:Establishing SSL connection without server’s identity verification is not recommended