htmluinit+jsoup 网络爬虫
来源:互联网 发布:c语言入门程序设计 编辑:程序博客网 时间:2024/06/06 13:21
网络爬虫个人笔记
1.所需要的jar包
htmluinit.jar (可理解为无页面的浏览器,可以模拟浏览器各种操作,可执行js ,处理ajax请求后页面等)
jsoup.jar(处理静态页面,转换为dom文档,进行操作)
2.使用实例
2.1htmlunit
WebClientwebClient= newWebClient(BrowserVersion.CHROME);//创建浏览器 webClient.getOptions().setJavaScriptEnabled(false);//禁用js webClient.getOptions().setCssEnabled(false);//禁用css //添加cookie CookieManagercookieManager= newCookieManager(); cookieManager.addCookie(new Cookie("tieba.baidu.com", "BDUSS", "具体值")); webClient.setCookieManager(cookieManager); // 获取当前页的所有帖子元素。返回 DOM节点列表 HtmlPagepage= webClient.getPage("http://tieba.baidu.com/mo/m?kw=java"); DomNodeList<DomNode>iList = page.querySelectorAll(".i");//参数为各种选择器,同JQ // 选择 p 元素 DomNodep =iList[0].querySelector("p");//单个节点 p.asText()//返回元素文本 <a>文本</a> 返回 文本 p.asXml()//返回元素xml文件 <a>文本</a> 返回 <a>文本</a> //获取a元素连接 HtmlAnchora = (HtmlAnchor) i.querySelector("a"); Stringhref = a.getAttribute("href"); //获取按钮,模拟点击 HtmlInputsub1 = (HtmlInput) tPage.querySelector("input[name=sub1]"); sub1.click();
处理ajax返回延迟问题
HtmlPage page2 = btn.click(); for (inti = 0; i < 20; i++) { String text= page2.querySelector("#textarea1").asText(); if (!text.trim().isEmpty()){ System.out.println(page2.asXml()); break; } synchronized (page2) { page.wait(500); } }
2.2jsoup
Jsoup.parse解析HTML字符串,如Jsoup.parse("<html><head><title>Firstparse</title></head>")
Jsoup.connect解析url网站地址,如Jsoup.connect(http://www.baidu.com).get()
//本地文件读取方式 File input = new File("/tmp/input.html"); Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/"); //网络网页读取方式 Document doc = Jsoup.connect("http://www.oschina.net/") .data("query", "Java") // 请求参数 .userAgent("I ’ mjsoup") // 设置 User-Agent .cookie("auth", "token") // 设置 cookie .timeout(3000) // 设置连接超时时间 .post(); // 使用 POST 方法访问 URL Document doc = Jsoup.connect("http://www.baidu.com").timeout(10000).get(); Elementslinks = doc.getElementsByTag("a"); for (Element link : links) { StringlinkHref = link.attr("href"); StringlinkText = link.text(); System.out.println("linkHref: "+linkHref); System.out.println("linkText: "+linkText); }
2.3htmlunit与jsoup结合方式
DomNode p = i.querySelector("h4a"); String xml =i.asXml(); Document dom= Jsoup.parse(xml, "UTF-8"); Elements elements=dom.select("img"); String img_url=elements.get(0).attr("data-original");
2.4 Frame页面问题处理
HtmlPage framePage(HtmlPage)p.getFrameByName("FrameName").getEnclosedPage();
个人爬虫项目练习(不涉及多线程):http://download.csdn.net/detail/ab2361936/9767254
0 0
- htmluinit+jsoup 网络爬虫
- Jsoup网络爬虫
- java jsoup 网络爬虫
- Jsoup之网络爬虫
- Jsoup做的网络爬虫
- jsoup 的用法网络爬虫
- Jsoup 网络爬虫 学习例子
- 使用JSOUP实现网络爬虫
- Jsoup 爬虫 抓取网络图片
- Jsoup -- 网络爬虫解析器
- 使用JSOUP实现网络爬虫
- 【使用JSOUP实现网络爬虫】处理URLs
- 网络爬虫利器:fiddle+httpclient+jsoup
- Android客户端网络爬虫jsoup原理
- Android网络爬虫程序(基于Jsoup)
- 【使用JSOUP实现网络爬虫】处理URLs
- 网络爬虫2----JSoup解析HTML
- 网络爬虫中Jsoup请求url
- NSOperation
- 映射实体关联关系
- 1 Hadoop伪分布式环境搭建
- 续3:接上一篇
- 警惕!MySQL成数据勒索新目标
- htmluinit+jsoup 网络爬虫
- 递归求阶乘
- Linux 下 virtualenv 安装
- 为什么我喜欢在 Ubuntu 上使用 KDE Connect 的 6 个理由
- PAT (Advanced Level) Practise 1121. Damn Single (25)
- 什么是web标准、可用性、可访问性
- Apache Beam | 下一代的大数据处理标准
- linux常见命令
- django使用xadmin的全局配置