Atitit.网页爬虫的架构总结
2015-01-17 14:51
330 查看
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
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();
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
continue;
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();
}
}
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);
}
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");
}
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.网页爬虫的架构总结
- Atitit.ati orm的设计and架构总结 适用于java c# php版
- Atitit 软件架构方法的进化与演进cs bs soa roa msa attilax总结
- Atitit.ati orm的设计and架构总结 适用于java c# php版
- Atitit 延迟绑定架构法attilax总结
- Atitit.ati orm的设计and架构总结 适用于java c# php版
- Atitit 架构的原则attilax总结
- atitit.系统架构图 的设计 与工具 attilax总结
- Atitit 软件架构方法的进化与演进cs bs soa roa msa attilax总结
- Atitit 关于微服务的思考与理解 attilax总结 1.1. 架构的历史 微服务发展历史 Web》soa》msa 1 1.2. 微服务最大特点 独立部署 1 2. 微服务的优点 1 2.1.
- atitit uke产品线 attilax总结.docx 1. 知识聚合 知识检索 产品线 1 2. 爬虫产品线 1 3. 发帖机产品线 1 4. 发动机产品线 1 5. O2o产品线(旅游
- Atitit.研发管理---TOGAF架构跟 (ADM开发方法)总结
- Atitit 架构的原则attilax总结
- Atitit.ati orm的设计and架构总结 适用于java c# php版
- atitit.系统架构图 的设计 与工具 attilax总结
- Atitit. Attilax企业框架 AEF的发展里程总结
- atitit.web ui 结构建模工具总结
- atitit. 日志系统的原则and设计and最佳实践(1)-----原理理论总结.
- Atitit. BigConfirmTips 控件 大数据量提示确认控件的原理and总结O9
- Atitit. BigConfirmTips 控件 大数据量提示确认控件的原理and总结O9