Atitit.网页爬虫的架构总结

本文详细介绍了网页爬虫的基本架构及实现方法,包括获取页面总数、处理单个页面、提取数据条目等核心流程,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.youkuaiyun.com/attilax

 

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

 

if(i<pageStart)

continue;

 

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

 */

private void singlePage(int pagethrows ConnEx, NoRztEx, ParseLsitEx {

 String html = null;

try {

String api = (StringgetCurPageUrl(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 htmlthrows 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=(Elementobj;

  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.printlnline);

}

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的专栏 博客频道 - youkuaiyun.com.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值