java实现爬取指定网站的数据

合集下载

java抓取网页内容

java抓取网页内容

con.connect();
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(),"UTF-8"));
String s = "";
StringBuffer sb = new StringBuffer("");
String s = "";
StringBuffer sb = new StringBuffer("");
while ((s = br.readLine()) != null) {
i++;
sb.append(s+"\r\n");
}
这种方法抓取一般的网页应该没有问题,但当有些网页中存在一些嵌套的redirect连接时,它就会报Server redirected too many times这样的错误,这是因为此网页内部又有一些代码是转向其它网页的,循环过多导致程序出错。如果只想抓取本URL中的网页内容,而不愿意让它有其它的网页跳转,可以用以下的代码。
JAVA 抓取网页内容2011-01-06 16:43通过JAVA的API可以顺利的抓取网络上的大部分指定的网页内容,现与大家分享一下这方法理解与心得。最简单的一种抓取方法就是:
ห้องสมุดไป่ตู้
URL url = new URL(myurl);
BufferedReader br = new BufferedReader(newInputStreamReader(url.openStream()));
上面的程序抓取回来的全部内容都存放在sb这个字符串,我们就可以通过正则表达式对它进行分析,提取出自己想要的具体的内容,为我所用,呵呵,这是多么美妙的一件事情啊!

java网页数据抓取

java网页数据抓取

java⽹页数据抓取在很多⾏业中,要对⾏业数据进⾏分类汇总,及时分析⾏业数据,对于公司未来的发展,有很好的参照和横向对⽐。

所以,在实际⼯作,我们可能要遇到数据采集这个概念,数据采集的最终⽬的就是要获得数据,提取有⽤的数据进⾏数据提取和数据分类汇总。

很多⼈在第⼀次了解数据采集的时候,可能⽆从下⼿,尤其是作为⼀个新⼿,更是感觉很是茫然,所以,在这⾥分享⼀下⾃⼰的⼼得,希望和⼤家⼀起分享技术,如果有什么不⾜,还请⼤家指正。

写出这篇⽬的,就是希望⼤家⼀起成长,我也相信技术之间没有⾼低,只有互补,只有分享,才能使彼此更加成长。

在⽹页数据采集的时候,我们往往要经过这⼏个⼤的步骤:①通过URL地址读取⽬标⽹页②获得⽹页源码③通过⽹页源码抽取我们要提取的⽬的数据④对数据进⾏格式转换,获得我们需要的数据。

这是⼀个⽰意图,希望⼤家了解了解了基本流程,下来,我以⼀个案例具体实现如何提取我们需要的数据,对于数据提取可以⽤正则表达式进⾏提取,也可以⽤httpclient+jsoup进⾏提取,此处,暂且不讲解httpclient+jsou提取⽹页数据的做法,以后会对httpclient+jsoup进⾏专门的讲解,此处,先开始讲解如何⽤正则表达式对数据进⾏提取。

其次我们看⽹页源码结构:上⾯源码可以很清楚的可以看到整个⽹页源码结构,下来我们就对整个⽹页数据进⾏提取import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import .HttpURLConnection;import .URL;import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;public class HTMLPageParser {public static void main(String[] args) throws Exception {//⽬的⽹页URL地址getURLInfo("/userSite/publicQuote/quotes_list.php","utf-8");}public static List<Product> getURLInfo(String urlInfo,String charset) throws Exception {//读取⽬的⽹页URL地址,获取⽹页源码URL url = new URL(urlInfo);HttpURLConnection httpUrl = (HttpURLConnection)url.openConnection();InputStream is = httpUrl.getInputStream();BufferedReader br = new BufferedReader(new InputStreamReader(is,"utf-8"));StringBuilder sb = new StringBuilder();String line;while ((line = br.readLine()) != null) {//这⾥是对链接进⾏处理line = line.replaceAll("</?a[^>]*>", "");//这⾥是对样式进⾏处理line = line.replaceAll("<(\\w+)[^>]*>", "<$1>");sb.append(line);}is.close();br.close();//获得⽹页源码return getDataStructure(sb.toString().trim());}static Pattern proInfo= pile("<div>(.*?)</div>\\s*<div>(.*?)</div>\\s*<div>(.*?)</div>\\s*<div>(.*?)</div>\\s*<div>(.*?)</div>", Pattern.DOTALL);private static List<Product> getDataStructure(String str) {//运⽤正则表达式对获取的⽹页源码进⾏数据匹配,提取我们所要的数据,在以后的过程中,我们可以采⽤httpclient+jsoup,//现在暂时运⽤正则表达式对数据进⾏抽取提取String[] info = str.split("</li>");List<Product> list = new ArrayList<Product>();for (String s : info) {Matcher m = proInfo.matcher(s);Product p = null;if (m.find()) {p = new Product();//设置产品型号String[] ss = m.group(1).trim().replace(" ", "").split(">");p.setProStyle(ss[1]);//设置产品数量p.setProAmount(m.group(2).trim().replace(" ", ""));//设置产品报价p.setProPrice(m.group(4).trim().replace(" ", ""));//设置产品供应商p.setProSupplier(m.group(5).trim().replace(" ", ""));list.add(p);}}//这⾥对集合⾥⾯不是我们要提取的数据进⾏移除list.remove(0);for (int i = 0; i < list.size(); i++) {System.out.println("产品型号:"+list.get(i).getProStyle()+",产品数量:"+list.get(i).getProAmount()+",产品报价:"+list.get(i).getProPrice()+",产品供应商:"+list.get(i).getProSupplier());}return list;}}class Product {private String proStyle;//产品型号private String proAmount;//产品数量private String proPrice;//产品报价private String proSupplier;//产品供应商public String getProStyle() {return proStyle;}public void setProStyle(String proStyle) {this.proStyle = proStyle;}public String getProSupplier() {return proSupplier;}public void setProSupplier(String proSupplier) {this.proSupplier = proSupplier;}public String getProAmount() {return proAmount;}public void setProAmount(String proAmount) {this.proAmount = proAmount;}public String getProPrice() {return proPrice;}public void setProPrice(String proPrice) {this.proPrice = proPrice;}public Product() {}@Overridepublic String toString() {return "Product [proAmount=" + proAmount + ", proPrice=" + proPrice+ ", proStyle=" + proStyle + ", proSupplier=" + proSupplier+ "]";}}好了,运⾏上⾯程序,我们得到下⾯的数据,就是我们要获得的最终数据获得数据成功,这就是我们要获得最终的数据结果,最后我要说的是,此处这个⽹页算是⽐较简单的,⽽且,⽹页源码可以看到源数据,并且此⽅式是以get⽅式进⾏数据提交,真正采集的时候,有些⽹页结构⽐较复杂,可能会存在着源码⾥⾯没有我们所要提取的数据,关于这⼀点的解决⽅式,以后给⼤家进⾏介绍。

Java获取网页数据步骤方法详解

Java获取网页数据步骤方法详解

Java获取⽹页数据步骤⽅法详解在很多⾏业当中,我们需要对⾏业进⾏分析,就需要对这个⾏业的数据进⾏分类,汇总,及时分析⾏业的数据,对于公司未来的发展,有很好的参照和横向对⽐。

⾯前通过⽹络进⾏数据获取是⼀个很有效⽽且快捷的⽅式。

⾸先我们来简单的介绍⼀下,利⽤java对⽹页数据进⾏抓取的⼀些步骤,有不⾜的地⽅,还望指正,哈哈。

屁话不多说了。

其实⼀般分为以下步骤:1:通过HttpClient请求到达某⽹页的url访问地址(特别需要注意的是请求⽅式)2:获取⽹页源码3:查看源码是否有我们需要提取的数据4:对源码进⾏拆解,⼀般使⽤分割,正则或者第三⽅jar包5:获取需要的数据对⾃⼰创建的对象赋值6:数据提取保存下⾯简单的说⼀下在提取数据中的部分源码,以及⽤途:/*** 向指定URL发送GET⽅法的请求** @param url* 发送请求的URL* @param param* 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。

* @return URL 所代表远程资源的响应结果*/public static String sendGet(String url, String param) {String result = "";BufferedReader in = null;try {String urlNameString = url;URL realUrl = new URL(urlNameString);// 打开和URL之间的连接URLConnection connection = realUrl.openConnection();// 设置通⽤的请求属性connection.setRequestProperty("accept", "*/*");connection.setRequestProperty("connection", "Keep-Alive");connection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 建⽴实际的连接connection.connect();// 获取所有响应头字段Map<String, List<String>> map = connection.getHeaderFields();// 定义 BufferedReader输⼊流来读取URL的响应in = new BufferedReader(new InputStreamReader(connection.getInputStream())); //这⾥如果出现乱码,请使⽤带编码的InputStreamReader构造⽅法,将需要的编码设置进去String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送GET请求出现异常!" + e);e.printStackTrace();}// 使⽤finally块来关闭输⼊流finally {try {if (in != null) {in.close();}} catch (Exception e2) {e2.printStackTrace();}}return result;}解析存储数据public Bid getData(String html) throws Exception {//获取的数据,存放在到Bid的对象中,⾃⼰可以重新建⽴⼀个对象存储Bid bid = new Bid();//采⽤Jsoup解析Document doc = Jsoup.parse(html);// System.out.println("doc内容" + doc.text());//获取html标签中的内容trElements elements = doc.select("tr");System.out.println(elements.size() + "****条");//循环遍历数据for (Element element : elements) {if (element.select("td").first() == null){continue;}Elements tdes = element.select("td");for(int i = 0; i < tdes.size(); i++){this.relation(tdes,tdes.get(i).text(),bid,i+1);}}return bid;}得到的数据Bid {h2 = '详见内容',itemName = '诉讼服务中⼼设备采购',item = '货物/办公消耗⽤品及类似物品/其他办公消耗⽤品及类似物品',itemUnit = '详见内容',areaName = '港北区',noticeTime = '2018年10⽉22⽇ 18:41',itemNoticeTime = 'null',itemTime = 'null',kaibiaoTime = '2018年10⽉26⽇ 09:00',winTime = 'null',kaibiaoDiDian = 'null',yusuanMoney = '¥67.00元(⼈民币)',allMoney = 'null',money = 'null',text = ''}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

使用JAVA进行网络爬虫和数据抓取的方法与建议

使用JAVA进行网络爬虫和数据抓取的方法与建议

使用JAVA进行网络爬虫和数据抓取的方法与建议一、引言随着互联网的快速发展,网络上的数据量也在不断增长。

为了获取和分析这些数据,网络爬虫和数据抓取成为了一种重要的技术手段。

本文将介绍使用JAVA进行网络爬虫和数据抓取的方法与建议。

二、网络爬虫的原理网络爬虫是一种自动化程序,通过模拟浏览器的行为,访问网页并抓取其中的数据。

其主要原理包括以下几个步骤:1. 发送HTTP请求:通过JAVA的网络编程库,发送HTTP请求到目标网址。

2. 下载网页内容:获取到HTTP响应后,将网页内容下载到本地。

3. 解析网页内容:使用HTML解析库,解析网页的结构,提取出需要的数据。

4. 存储数据:将提取到的数据存储到数据库或者文件中。

三、JAVA网络编程库的选择在使用JAVA进行网络爬虫和数据抓取之前,我们需要选择一个适合的网络编程库。

常用的网络编程库有Apache HttpClient、OkHttp等。

这些库提供了丰富的API,可以方便地发送HTTP请求和处理HTTP响应。

四、HTML解析库的选择HTML解析库可以帮助我们解析网页的结构,提取出需要的数据。

常用的HTML解析库有Jsoup、HtmlUnit等。

这些库提供了简洁的API,可以方便地进行网页解析和数据提取。

五、设置合适的请求头在发送HTTP请求时,我们需要设置合适的请求头。

一些网站可能会对爬虫进行限制,通过设置合适的请求头可以模拟浏览器的行为,降低被封禁的风险。

常见的请求头包括User-Agent、Referer等。

六、处理反爬机制为了防止被爬虫抓取,一些网站会采取一些反爬机制,如验证码、IP封禁等。

在进行网络爬虫和数据抓取时,我们需要针对这些反爬机制进行相应的处理。

可以通过使用代理IP、使用验证码识别库等方式来应对反爬机制。

七、数据存储与处理在进行数据抓取之后,我们需要将抓取到的数据进行存储和处理。

可以选择将数据存储到数据库中,如MySQL、MongoDB等;也可以选择将数据存储到文件中,如CSV、JSON等。

JAVA使用爬虫抓取网站网页内容的方法_java_脚本之家

JAVA使用爬虫抓取网站网页内容的方法_java_脚本之家

9
HttpClient client = new HttpClient();
10
String response = null ;
11
12
String keyword = null ;
13
PostMethod postMethod = new PostMethod(url);
14
// try {
15
16
68 69
.getOutputStream());
70
out.write(strPostRequest);
71
out.flush();
72 73
out.close();
74
}
// 读取内容
BufferedReader rd = new BufferedReader( new InputStreamReader(
56 57
System.setProperty( ".client.defaultReadTimeout" , "5000" );
58
try {
59
URL newUrl = new URL(strUrl);
60 61
HttpURLConnection hConnect = (HttpURLConnection) newUrl
33
.getBytes( "ISO‐8859‐1" ), "gb2312" );
34
//这里要注意下 gb2312要和你抓取网页的编码要一样
35
36
String p = response.replaceAll( "//&[a‐zA‐Z]{1,10};" , "" )

java实现maven项目最简单的网络爬虫并导出爬取的数据

java实现maven项目最简单的网络爬虫并导出爬取的数据

java实现maven项⽬最简单的⽹络爬⾍并导出爬取的数据⼀、pom包引⼊<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.3</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpmime</artifactId><version>4.5.3</version></dependency><dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.10.2</version></dependency><!-- poi的依赖包 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.16</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>3.16</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-excelant</artifactId><version>3.16</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-examples</artifactId><version>3.16</version></dependency>⼆、创建实体类Product 属性可以根据⾃已的业务定义(⽣成set get ⽅法快捷键 alt+insert )private String productName; //品名private String specs;//规格private String brand; //品牌private String lowerPrice; //价格private String OfferArea; //报价区域private String OfferCompany; //报价企业private String offerDate; //报价⽇ 三、抓取数据业务代码import java.io.FileNotFoundException;import java.io.IOException;import java.util.ArrayList;import java.util.List;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements;import com.dark.pojo.Product;import com.dark.util.POItoExcel;public class Reptile {public static void main(String[] args) throws FileNotFoundException, IOException {List<Product> list=getInfor("https:///prices/"); //要抓取数据的 url 返回多条数据,POItoExcel.toExcel(list); //导出到Excel 根据业务可以存⼊数据库}public static List<Product> getInfor(String url){List<Product> proList=new ArrayList<Product>();try {Document doc=Jsoup.connect(url).get(); //使⽤Jsoup 解析HTMLElements pages=doc.select(".pages a"); //.pages a HTML类选择器 pages 下⾯的 a 标签,这⾥是获取最⼤页数for (int i = 0; i < pages.size(); i++) { //遍历页数抓取每页数据url = "https:///prices/"+ (i + 1) +".html";doc=Jsoup.connect(url).get();Elements table=doc.select(".b-j-con table:first-child"); // .b-j-con 找到要抓取数据的table表(.xx 代表类选择器)Elements tbody=table.select("tbody");//获取到表单的体Elements trList=tbody.select("tr");//找到 tr 标签⾥⾯的数据trList.remove(0);for(Element tr:trList){ //遍历抓取数据Elements tdList=tr.select("td");Product product=new Product(); //该td 标签下⾯有⼆级标签 product.setProductName(tdList.get(0).select("p a").html().toString());//品名product.setSpecs(tdList.get(1).html().toString());//规格product.setBrand(tdList.get(2).html().toString());//品牌product.setLowerPrice(tdList.get(3).html().toString());//价格product.setOfferArea(tdList.get(4).select("p").html().toString());//报价区域product.setOfferCompany(tdList.get(5).select("p").html().toString());//报价企业product.setOfferDate(tdList.get(6).html().toString());proList.add(product); //数据封装List}}} catch (IOException e) {e.printStackTrace();}return proList;}} 四、导出数据(根据业务可以存⼊数据库) import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.List;import ermodel.Cell;import ermodel.CellStyle;import ermodel.HorizontalAlignment;import ermodel.Row;import ermodel.VerticalAlignment;import org.apache.poi.ss.util.CellRangeAddress;import ermodel.XSSFCell;import ermodel.XSSFRow;import ermodel.XSSFSheet;import ermodel.XSSFWorkbook;import com.dark.pojo.Product;public class POItoExcel {public static void toExcel(List<Product> list) throws FileNotFoundException, IOException{ XSSFWorkbook workBook=new XSSFWorkbook();XSSFSheet sheet=workBook.createSheet();CellRangeAddress cra=new CellRangeAddress(0,1, 0, 6);sheet.addMergedRegion(cra);Row row2=sheet.createRow(0);Cell cell=row2.createCell(0);cell.setCellValue("新凤鸣报价单");CellStyle cs=workBook.createCellStyle();cs.setAlignment(HorizontalAlignment.CENTER);cs.setVerticalAlignment(VerticalAlignment.CENTER);cs.setFillBackgroundColor((short) 59);cell.setCellStyle(cs);Row row=sheet.createRow(2);Cell cell11=row.createCell(0);cell11.setCellValue("品名");Cell cell22=row.createCell(1);cell22.setCellValue("规格型号");Cell cell33=row.createCell(2);cell33.setCellValue("品牌");Cell cell44=row.createCell(3);cell44.setCellValue("价格");Cell cell55=row.createCell(4);cell55.setCellValue("报价区域");Cell cell66=row.createCell(5);cell66.setCellValue("报价企业");Cell cell77=row.createCell(6);cell77.setCellValue("报价时间");for(int i=0;i<list.size();i++){XSSFRow row4=sheet.createRow(i+3);XSSFCell cell1=row4.createCell(0);XSSFCell cell2=row4.createCell(1);XSSFCell cell3=row4.createCell(2);XSSFCell cell4=row4.createCell(3);XSSFCell cell5=row4.createCell(4);XSSFCell cell6=row4.createCell(5);XSSFCell cell7=row4.createCell(6);cell1.setCellValue(list.get(i).getProductName());cell2.setCellValue(list.get(i).getSpecs());cell3.setCellValue(list.get(i).getBrand());cell4.setCellValue(list.get(i).getLowerPrice());cell5.setCellValue(list.get(i).getOfferArea());cell6.setCellValue(list.get(i).getOfferCompany());cell7.setCellValue(list.get(i).getOfferDate());}workBook.write(new FileOutputStream(new File("E:\\\\测试.xls")) ); workBook.close();}}。

Java抓取网页内容三种方式

Java抓取网页内容三种方式

java抓取网页内容三种方式2011-12-05 11:23一、GetURL.javaimport java.io.*;import .*;public class GetURL {public static void main(String[] args) {InputStream in = null;OutputStream out = null;try {// 检查命令行参数if ((args.length != 1)&& (args.length != 2))throw new IllegalArgumentException("Wrong number of args");URL url = new URL(args[0]); //创建 URLin = url.openStream(); // 打开到这个URL的流if (args.length == 2) // 创建一个适当的输出流out = new FileOutputStream(args[1]);else out = System.out;// 复制字节到输出流byte[] buffer = new byte[4096];int bytes_read;while((bytes_read = in.read(buffer)) != -1)out.write(buffer, 0, bytes_read);}catch (Exception e) {System.err.println(e);System.err.println("Usage: java GetURL <URL> [<filename>]");}finally { //无论如何都要关闭流try { in.close(); out.close(); } catch (Exception e) {}}}}运行方法:C:\java>java GetURL http://127.0.0.1:8080/kj/index.html index.html 二、geturl.jsp<%@ page import="java.io.*" contentType="text/html;charset=gb2312" %> <%@ page language="java" import=".*"%><%String htmpath=null;BufferedReader in = null;InputStreamReader isr = null;InputStream is = null;PrintWriter pw=null;HttpURLConnection huc = null;try{htmpath=getServletContext().getRealPath("/")+"html\\morejava.html"; pw=new PrintWriter(htmpath);URL url = new URL("http://127.0.0.1:8080/kj/morejava.jsp"); //创建 URL huc = (HttpURLConnection)url.openConnection();is = huc.getInputStream();isr = new InputStreamReader(is);in = new BufferedReader(isr);String line = null;while(((line = in.readLine()) != null)) {if(line.length()==0)continue;pw.println(line);}}catch (Exception e) {System.err.println(e);}finally { //无论如何都要关闭流try { is.close(); isr.close();in.close();huc.disconnect();pw.close(); } catch (Exception e) {}}%>OK--,创建文件成功三、HttpClient.javaimport java.io.*;import .*;public class HttpClient {public static void main(String[] args) {try {// 检查命令行参数if ((args.length != 1) && (args.length != 2))throw new IllegalArgumentException("Wrong number of args");OutputStream to_file;if (args.length == 2)to_file = new FileOutputStream(args[1]);//输出到文件elseto_file = System.out;//输出到控制台URL url = new URL(args[0]);String protocol = url.getProtocol();if (!protocol.equals("http"))throw new IllegalArgumentException("Must use 'http:' protocol"); String host = url.getHost();int port = url.getPort();if (port == -1) port = 80;String filename = url.getFile();Socket socket = new Socket(host, port);//打开一个socket连接InputStream from_server = socket.getInputStream();//获取输入流PrintWriter to_server = new PrintWriter(socket.getOutputStream());//获取输出流to_server.print("GET " + filename + "\n\n");//请求服务器上的文件to_server.flush(); // Send it right now!byte[] buffer = new byte[4096];int bytes_read;//读服务器上的响应,并写入文件。

java利用url实现网页内容的抓取

java利用url实现网页内容的抓取

java利⽤url实现⽹页内容的抓取闲来⽆事,刚学会把git部署到远程服务器,没事做,所以简单做了⼀个抓取⽹页信息的⼩⼯具,⾥⾯的⼀些数值如果设成参数的话可能扩展性能会更好!希望这是⼀个好的开始把,也让我对字符串的读取掌握的更加熟练了,值得注意的是JAVA1.8⾥⾯在使⽤String拼接字符串的时候,会⾃动把你要拼接的字符串⽤StringBulider来处理,⼤⼤优化了String 的性能,闲话不多说,show my XXX code~运⾏效果:⾸先打开百度百科,搜索词条,⽐如“演员”,再按F12查看源码然后抓取你想要的标签,注⼊LinkedHashMap⾥⾯就ok了,很简单是吧!看看代码罗import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import .HttpURLConnection;import .URL;import java.util.*;/*** Created by chunmiao on 17-3-10.*/public class ReadBaiduSearch {//储存返回结果private LinkedHashMap<String,String> mapOfBaike;//获取搜索信息public LinkedHashMap<String,String> getInfomationOfBaike(String infomationWords) throws IOException {mapOfBaike = getResult(infomationWords);return mapOfBaike;}//通过⽹络链接获取信息private static LinkedHashMap<String, String> getResult(String keywords) throws IOException {//搜索的urlString keyUrl = "/search?word=" + keywords;//搜索词条的节点String startNode = "<dl class=\"search-list\">";//词条的链接关键字String keyOfHref = "href=\"";//词条的标题关键字String keyOfTitle = "target=\"_blank\">";String endNode = "</dl>";boolean isNode = false;String title;String href;String rLine;LinkedHashMap<String,String> keyMap = new LinkedHashMap<String,String>();//开始⽹络请求URL url = new URL(keyUrl);HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();InputStreamReader inputStreamReader = new InputStreamReader(urlConnection.getInputStream(),"utf-8");BufferedReader bufferedReader = new BufferedReader(inputStreamReader);//读取⽹页内容while ((rLine = bufferedReader.readLine()) != null){//判断⽬标节点是否出现if(rLine.contains(startNode)){isNode = true;}//若⽬标节点出现,则开始抓取数据if (isNode){//若⽬标结束节点出现,则结束读取,节省读取时间if (rLine.contains(endNode)) {//关闭读取流bufferedReader.close();inputStreamReader.close();break;}//若值为空则不读取if (((title = getName(rLine,keyOfTitle)) != "") && ((href = getHref(rLine,keyOfHref)) != "")){keyMap.put(title,href);}}}return keyMap;}//获取词条对应的urlprivate static String getHref(String rLine,String keyOfHref){String baikeUrl = "";String result = "";if(rLine.contains(keyOfHref)){//获取urlfor (int j = rLine.indexOf(keyOfHref) + keyOfHref.length();j < rLine.length()&&(rLine.charAt(j) != '\"');j ++){result += rLine.charAt(j);}//获取的url中可能不含baikeUrl,如果没有则在头部添加⼀个if(!result.contains(baikeUrl)){result = baikeUrl + result;}}return result;}//获取词条对应的名称private static String getName(String rLine,String keyOfTitle){String result = "";//获取标题内容if(rLine.contains(keyOfTitle)){result = rLine.substring(rLine.indexOf(keyOfTitle) + keyOfTitle.length(),rLine.length());//将标题中的内容含有的标签去掉result = result.replaceAll("<em>|</em>|</a>|<a>","");}return result;}}以上就是本⽂的全部内容,希望本⽂的内容对⼤家的学习或者⼯作能带来⼀定的帮助,同时也希望多多⽀持!。

java爬虫抓取网页数据教程

java爬虫抓取网页数据教程

java爬虫抓取网页数据教程数据是科研活动重要的基础,而爬虫是获取数据一个比较常见的方法,爬虫的基本原理很简单,就是利用程序访问互联网,然后将数据保存到本地中。

我们都知道,互联网提供的服务大多数是以网站的形式提供的。

我们需要的数据一般都是从网站中获取的,如电商网站商品信息、商品的评论、微博的信息等。

爬虫和我们手动将看到的数据复制粘贴下来是类似的,只是获取大量的数据靠人工显然不太可能。

因此,需要我们使用工具来帮助获取知识。

使用程序编写爬虫就是使用程序编写一些网络访问的规则,将我们的目标数据保存下来。

Java作为爬虫语言的一种,下面为大家介绍java爬虫抓取网页数据教程。

1、使用bbbClient简单抓取网页首先,假设我们需要爬取数据学习网站上第一页的博客(bbb://aaadatalearneraaa/blog)。

首先,我们需要使用导入bbbClient 4.5.3这个包(这是目前最新的包,你可以根据需要使用其他的版本)。

Java本身提供了关于网络访问的包,在中,然后它不够强大。

于是Apache基金会发布了开源的bbb请求的包,即bbbClient,这个包提供了非常多的网络访问的功能。

在这里,我们也是使用这个包来编写爬虫。

好了,使用pom.xml下载完这个包之后我们就可以开始编写我们的第一个爬虫例子了。

其代码如下(注意,我们的程序是建立在test包下面的,因此,需要在这个包下才能运行):package test;import org.apache.bbb.bbbEntity;importorg.apache.bbb.client.methods.CloseablebbbResponse;import org.apache.bbb.client.methods.bbbGet;importorg.apache.bbb.impl.client.CloseablebbbClient;importorg.apache.bbb.impl.client.bbbClients;importorg.apache.bbb.util.EntityUtils;import java.io.IOException;/*** 第一个爬虫测试* Created by DuFei on 2017/7/27.*/public class FirstTest {public static void main(String[] args) {//建立一个新的请求客户端CloseablebbbClient bbbClient =bbbClients.createDefault();//使用bbbGet方式请求网址bbbGet bbbGet = new bbbGet("bbb://aaadatalearneraaa/blog");//获取网址的返回结果CloseablebbbResponse response = null;try {response = bbbClient.execute(bbbGet);} catch (IOException e) {e.printStackTrace();}//获取返回结果中的实体bbbEntity entity = response.getEntity();//将返回的实体输出try {System.out.println(EntityUtils.toString(entity));EntityUtils.consume(entity);} catch (IOException e) {e.printStackTrace();}}}如上面的代码所示,爬虫的第一步需要构建一个客户端,即请求端,我们这里使用CloseablebbbClient作为我们的请求端,然后确定使用哪种方式请求什么网址,再然后使用bbbResponse获取请求的位置对应的结果即可。

java 爬虫案例

java 爬虫案例

java 爬虫案例Java爬虫案例1. 爬取网页内容Java爬虫可以通过发送HTTP请求获取网页的内容。

可以使用Java 的URLConnection或者HttpClient等工具类库发送GET或POST请求,并获取返回的网页内容。

通过解析网页的HTML结构,可以提取出所需的信息。

2. 提取网页中的链接爬虫可以通过解析网页的HTML结构,提取出所有的链接。

可以使用Java的正则表达式、Jsoup等工具来解析网页。

通过遍历网页中的链接,可以进一步获取其他网页的内容。

3. 爬取图片Java爬虫可以通过解析网页的HTML结构,提取出图片的链接,然后使用Java的IO流将图片保存到本地或者其他存储介质中。

可以使用Java的正则表达式、Jsoup等工具来解析网页,并使用Java 的IO流进行文件的读写操作。

4. 爬取表格数据Java爬虫可以通过解析网页的HTML结构,提取出表格中的数据。

可以使用Java的正则表达式、Jsoup等工具来解析网页,并通过遍历表格的行和列,提取出所需的数据。

5. 登录网站爬取数据有些网站需要登录才能获取到数据,Java爬虫可以模拟登录过程,发送POST请求并携带登录信息,然后获取登录后的网页内容。

可以使用Java的URLConnection或者HttpClient等工具类库发送POST 请求,并获取返回的登录后的网页内容。

6. 爬取动态网页有些网页内容是通过JavaScript动态生成的,Java爬虫可以使用无头浏览器(headless browser)来模拟浏览器的行为,执行JavaScript代码,并获取动态生成的网页内容。

可以使用Java的Selenium等工具来模拟浏览器的行为。

7. 爬取API数据有些网站提供了API接口,Java爬虫可以通过发送HTTP请求并携带相应的参数,获取API返回的数据。

可以使用Java的URLConnection或者HttpClient等工具类库发送HTTP请求,并解析API返回的数据。

JAVA抓取网站数据

JAVA抓取网站数据

JAVA抓取网站数据JAVA抓取网站数据00可以使用抓取的类库包括JDK自带URL或第三方的HttpClient,这里使用URL基础类库访问网络。

其实,用JDK自带的URL模拟网站请求,并返回数据是个模板式的过程,只可能有时候碰到多重跳转,或重定向而采取多个模板式过程而已。

一般流程类似:1将要模拟的请求地址传递给URL2通过URL获得一个连接对象,URLConnection或将其转化为子类HttpURLConnection我常用HttpURLConnection,有时候死活连不上可以尝试切换使用,呵呵。

3通过setRequestProperty函数来设置请求参数,请求方式,具体设置哪些参数对应网站有所不同。

4通过连接对象的函数来设置:诸如禁止自动跳转重定向,超时的时间,输入输出设定等。

5调用connect(),开始连接地址。

5如果请求为get,附带参数;或post,附带表单信息,则通过getOutputStream函数传递,这个函数自带connect()过程,所以第5步有这方法存在则省略。

注:output必须在input之前执行,否则抛异常。

6 通过getResponseCode得到连接并发送参数后返回的状态码:可能为跳转地址,重定向地址,也可能为直接返回数据。

注:在第3或4步中设置setInstanceFollowRedirects(false);便于分析每次请求后的流程,是得到数据还是跳转了地址等等。

200成功连接服务,但不表示满足网站的业务需求,比如登录成功等。

301 302跳转或重定向可以通过getHeaderField("location");得到接下来转向地址500 与服务器连接失败,首先检测User-Agent请求头模拟信息是否准确。

7 通过getInputStream()得到请求成功后的信息数据流。

8 通过IO可以尝试测试返回的数据信息,如果是压缩包或者文件可以通过IO来下载保存9第一次请求不需要Cookie信息,但是如果需要接下来的请求,可能会涉及需要登录以后才可以操作的流程,所以需要把第一次生成的session传递下去。

Java的网络爬虫使用Java抓取互联网数据

Java的网络爬虫使用Java抓取互联网数据

Java的网络爬虫使用Java抓取互联网数据随着互联网的迅猛发展和信息量的剧增,人们对于获取互联网数据的需求也越来越高。

为了满足这一需求,网络爬虫应运而生。

网络爬虫是一种自动化程序,能够模拟人的行为,在互联网上按照一定的规则获取所需的数据。

Java作为一种高级编程语言,在网络爬虫的开发中得到了广泛应用。

Java的网络爬虫主要通过HTTP协议来实现数据的抓取。

HTTP是一种无状态的协议,通过发送请求(Request)和接收响应(Response)来进行通信。

Java提供了丰富的网络编程库,开发者可以利用这些库来构建网络爬虫。

在使用Java开发网络爬虫时,首先需要确定所需抓取的目标网站。

然后,需要了解该网站的页面结构和数据格式,以便编写相应的抓取程序。

一般来说,网络爬虫的抓取过程主要包括以下几个步骤:1. 发送HTTP请求:Java提供了HttpURLConnection和HttpClient等类,可以用来发送HTTP请求。

我们可以通过这些类来模拟浏览器发送请求,获取网页内容。

2. 解析HTML:抓取到的网页内容一般是HTML格式的,需要使用HTML解析库来提取所需的数据。

Java中常用的HTML解析库有Jsoup和HtmlUnit等,它们提供了丰富的API,可以方便地解析和操作HTML文档。

3. 数据处理和存储:通过解析HTML文档,我们可以获取到所需的数据。

接下来,需要对这些数据进行处理和存储。

Java提供了各种数据处理和存储的工具和框架,例如数据库操作工具JDBC、数据分析框架Hadoop等,可以根据实际需求选择合适的工具和框架。

4. 遵守规则和道德准则:在进行网络爬取时,需要遵守一些规则和道德准则。

首先,需要尊重网站的Robots协议,遵守网站的访问频率限制;其次,需要尊重网站的版权和隐私规定,不得将抓取到的数据用于非法或侵犯他人利益的用途。

除了以上基本步骤,Java的网络爬虫还可以通过多线程、代理IP和验证码识别等技术来提高抓取效率和解决一些难题。

java爬虫总结

java爬虫总结

java爬虫总结Java爬虫是一种使用Java编程语言编写的网络爬虫程序,用于从网站上抓取数据。

在本文中,我们将总结Java爬虫的一些关键点,包括:1. 确定目标网站:首先需要确定要爬取的目标网站,并了解网站的结构和数据格式。

2. 选择合适的库:Java有许多用于网络爬虫的库,例如Jsoup、HttpClient、HttpClient等。

选择合适的库可以帮助简化爬虫的开发过程。

3. 模拟浏览器行为:为了遵守网站的规则和避免被目标网站封禁,需要模拟浏览器的行为,例如使用User-Agent头、处理Cookies和Session等。

4. 解析网页结构:使用HTML解析器将网页内容解析为DOM树,以便提取所需的数据。

常见的HTML解析器包括Jsoup和HtmlCleaner等。

5. 数据提取:根据需要提取网页中的数据,可以使用XPath或CSS选择器等表达式来定位数据的位置。

6. 数据存储:将提取的数据存储到本地文件、数据库或远程服务器中。

根据实际需求选择合适的存储方式。

7. 遵守法律法规:在进行网络爬虫时,必须遵守相关法律法规和网站的使用条款,尊重网站的隐私和数据保护政策。

8. 优化性能:优化爬虫的性能可以使其更快地抓取数据,例如使用多线程、缓存等技术。

9. 异常处理:在爬虫程序中添加异常处理逻辑,以便在遇到错误时能够优雅地处理并记录错误信息。

10. 遵守规则:在爬取目标网站之前,请确保遵守文件的规则,以避免对网站造成不必要的负担或违反使用条款。

总之,Java爬虫可以帮助我们从网站上抓取所需的数据,但在开发和使用爬虫时,需要注意遵守相关法律法规和网站的使用条款,以尊重网站的隐私和数据保护政策。

java简单实现抓取动态网页数据

java简单实现抓取动态网页数据

java简单实现抓取动态⽹页数据java简单实现抓取动态⽹页数据在这⾥我分享⼀段简单的获取js执⾏后的⽹页数据!1.先建⽴⼀个maven⼯程在这⾥我随便建了⼀个web⼯程!根据你安装的Google路径⽐如:C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe3.在环境变量中的系统变量 path 中配置:C:\\Program Files (x86)\\Google\\Chrome\\Application5.测试是否配置成功如果启动浏览器说明配置成功了System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe"); WebDriver webDriver = new ChromeDriver();setProperty (String prop, String value);参数:prop - 系统属性的名称。

value - 系统属性的值。

返回:系统属性的值,如果没有值,则返回null。

6.获取⽹页js执⾏后页⾯全部数据System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe"); WebDriver webDriver = new ChromeDriver();webDriver.get("/?fr=mhd_card");//写⼊你要抓取的⽹址WebElement webElement = webDriver.findElement(By.xpath("/html"));//获取页⾯全部信息String htmlText=webElement.getAttribute("outerHTML");webDriver.close();//必须关闭资源WebDriver 获取⽹页数据信息,由By来定位,通过WebElement来解析数据!如果有兴趣的可以去看API!简单描述⼀下如何获取节点数据。

java如何获取浏览器的访问网址及其内容

java如何获取浏览器的访问网址及其内容
getServerName:请求的服务器.
getProtocol:使用协议.getMethod:请求方法.
getServerPort:请求端口号.
getContextPath:Context路径.
getServletPath: Servlet路径.
getRequestURI:URI路径.
getQueryString:查询字符串.
getRemoteAddr:使用者主机IP.
getRemotePort:使用者使用端口号.追问
我的意思是:例如,你正在上网,然后我通过这个就可以知道你上的什么网站,什么内容。
还有上边的如果行。
请问它在那个包里?
以下文字资料是由历史新知网wwwlishixinzhicom小编为大家搜集整理后发布的内容让我们赶快一起来看一下吧
java如何获取浏览器的访问网址及其内容
通过request俩获取,以下是request的方法介绍:
getParameterNames:取得客户端所发出的请求参数名称.
getParameter:可以让您指定请求参数名称,以取得对应的设定值.

java爬虫实现原理

java爬虫实现原理

java爬虫实现原理
Java爬虫实现的原理是基于网络爬取和数据提取的技术。

简单来说,爬虫就是通过HTTP协议从网络获取指定URL的
HTML页面,然后解析HTML文档,提取出所需的信息。

1. 指定URL:首先需要指定要爬取的网站URL,通常是通过URL连接来实现。

2. 发送HTTP请求:使用Java的URLConnection类或HttpClient等工具,构建HTTP请求,并发送到指定的URL上。

3. 接收响应:获取到服务器返回的HTML页面,可以通过InputStream或其他方法获取响应内容。

4. 解析HTML:将获取到的HTML页面进行解析,通常使用Jsoup等HTML解析库。

可以根据HTML标签、类名、ID等
特征来定位和提取所需的数据。

5. 保存数据:将提取到的数据保存到本地数据库或文件中,以便后续使用。

6. 遍历链接:如果需要爬取整个网站,可以在解析HTML时
获取到页面中的链接,并将这些链接加入到待爬取的URL集
合中,然后继续循环爬取。

7. 限制访问频率:为了避免对目标网站造成过大的负担,可以设置爬取间隔时间或使用代理服务器来降低访问频率。

需要注意的是,爬虫在实际应用时也需要遵循相关的法律法规和道德规范,避免对目标网站的正常运行造成干扰或侵犯隐私等问题。

JAVA利用jsoup爬取小说网站内容

JAVA利用jsoup爬取小说网站内容

JAVA利⽤jsoup爬取⼩说⽹站内容jar包package Jsouop;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements;import javax.print.DocFlavor;import javax.print.attribute.standard.PDLOverrideSupported;import java.io.*;import .URL;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Jsoupdemo2 {public static void main(String[] args) throws IOException {//1.导⼊jar包//2.获取DOCUMENT对象//2.1获取路径String paths = Jsoupdemo2.class.getClassLoader().getResource("student.xml").getPath();//2.2解析XML对象。

加载进内存///Document document = Jsoup.parse(new File(paths), "utf-8");//下⼀章的hrefString Shref=null;String urltow=readFileContent("d:\\yd.txt");System.out.println(urltow);//URL打开⼀个连接//随便打开⼀个章节URL url=new URL("/du/27/27614/"+urltow+"");//获取指定div元素String sts=Jsoup.parse(url, 100000).select("#content1").toString();String sc=getChinese(sts);//转换为数组char[] c=sc.toCharArray();for(int i=0;i<=c.length-1;i++){System.out.print(c[i]);//每100个换⼀⾏if(i%50==0){System.out.println();}}// System.out.print(ststow);//输出//获取全部A标签元素Elements a = Jsoup.parse(url, 100000).getElementsByTag("a");for (Element element : a) {if(element.text().contains("下⼀章")){Shref=element.attr("href");//取得下⼀章的href}}System.out.println(Shref);//创建⽂本记录下⼀章节hrefFileWriter fileWriter=new FileWriter("d:\\yd.txt");fileWriter.write(Shref);fileWriter.flush();fileWriter.close();}public static String getChinese(String paramValue) {//正则⽅法String regex = "([\u4e00-\u9fa5,。

Java实现网站数据采集

Java实现网站数据采集
} catch (HttpException e) {
//发生异常,可能是协议不对或者返回的内容有问题
System.out.println("Please check your provided http address!");
e.printStackTrace();
import mons.httpclient.methods.GetMethod;
import mons.httpclient.params.HttpMethodParams;
public class HttpClientTest...{
+ getMethod.getStatusLine());
}
//读取内容
byte[] responseBody = getMethod.getResponseBoy();
//处理内容
System.out.println(new String(步中创建好的实例的 execute 方法来执行第二步中创建好的 method 实例
4. 读 response
5. 释放连接。无论执行方法是否成功,都必须释放连接
6. 对得到后的内容进行处理
实现如下:
import java.io.IOException;
import mons.httpclient.*;
} catch (IOException e) {
//发生网络异常
e.printStackTrace();
} finally {
//释放连接
getMethod.releaseConnection();
}
}
public static void main(String[] args) {

JAVA实现爬取指定网站的数据

JAVA实现爬取指定网站的数据

apter/48552.html">点击阅读</a> 85. * 最后经过测试发现带空格的 class 可以写成两个 select 写成 Elements in dexEs = doc.select(".button").select(".read");成功抓取该书所有目录和链接。 86. 87. 88. //Elements linkElements = doc.select("div.hp-wrap").select("div. index-wrap>div.col-B>div.voice-main>div.public>div#J_public_item>ul>li>dl.it em-bd>dt>span>a"); 89. 90. 91. 92. f")); 93. 94. 95. PaserHtmlForNewsContent(newsTemp.getHtmlAddr(),newsTemp); newsList.add(newsTemp); NewsInfo newsTemp = new NewsInfo(ele.text(), ele.absUrl("hre for(Element ele:linkElements) { */
这个类是用来解析网站的内容 重点是:"div#page>div#content>div#local>div#recommend>ul>li>a"; 这里用用 firefox 的 firebug 组件查看网页的代码结构,不同的网页路径也不一样。
Java 代码 1. package zy.crawl.hupu; 2. 3. import java.io.IOException; 4. 5. import mon.*; 6. 7. import java.util.ArrayList; 8. import java.util.List; 9. 10. import org.apache.http.HttpEntity; 11. import org.apache.http.HttpHost; 12. import org.apache.http.HttpResponse; 13. import org.apache.http.HttpStatus; 14. import org.apache.http.client.HttpClient; 15. import org.apache.http.client.methods.HttpGet; 16. import org.apache.http.conn.params.ConnRoutePNames; 17. import org.apache.http.impl.client.DefaultHttpClient; 18. import org.apache.http.params.CoreConnectionPNames; 19. import org.apache.http.util.EntityUtils; 20. import org.jsoup.Jsoup; 21. import org.jsoup.nodes.Document; 22. import org.jsoup.nodes.Element; 23. import org.jsoup.select.Elements; 24. 25. public class CrawlHupu 26. { 27. 象 28. 29. 30. 31. 32. public String GetHtml(String url) //还方法是设置网络链接,是固定的用法 { String html = null; HttpClient httpClient = new DefaultHttpClient(); private List<NewsInfo> newsList = new ArrayList<>();//用来存储爬取的信息对

java如何爬取网页

java如何爬取网页

java如何爬取网页
百度搜索引擎的原理其中之一就是定期的派出网络爬虫到互联网上去爬取网页,下面就让小编教大家java如何爬取网页吧。

java爬取网页的方法
我希望输入一个有效的网址后返回这一网址下的网页源码,则有代码如图:
通过网址连接到指定的网址
在运行之前把开发空间的的编码改为UTF-8,否则编译执行返回的网页中的中文会变成乱码
连接成功后通过连接对象得到输入流,读出输入流就可以得到网页代码
运行后得到的网页代码如下
把返回的代码复制到EditPlus中运行一下看看
猜你感兴趣的:
1.java如何比较字符串
2.java半年工作经验怎么跳槽
3.Java中对象和引用的具体区别
4.java中怎么创建对象
5.java简历中项目经验怎么写。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.
mon.*;
6.
7.importjava.util.ArrayList;
8.importjava.util.List;
9.
10.importorg.apache.http.HttpEntity;
11.importorg.apache.http.HttpHost;
104.}//System.out.println(newsList.get(0).getContent());
105.
106.}
107.}
108.
109.publicvoidPaserHtmlForNewsContent(String contentHtmlAddr, NewsInfo newsTemp)//通过上面获得的标题信息的连接,抓取标题的正文部分。
12.importorg.apache.http.HttpResponse;
13.importorg.apache.http.HttpStatus;
14.importorg.apache.http.client.HttpClient;
15.importorg.apache.http.client.methods.HttpGet;
63.}
64.
65.returnhtml;
66.}
67.
68.publicvoidParseHtmlForNewsList()
69.{
70.String html = GetHtml("/");
71.
72.//hupu voice的第一个可以暂时去掉一个css,这样就不用处理空格了
89.for(Element ele:linkElements)
90.{Байду номын сангаас
91.
92.NewsInfo newsTemp =newNewsInfo(ele.text(), ele.absUrl("href"));
93.
94.PaserHtmlForNewsContent(newsTemp.getHtmlAddr(),newsTemp);
131.tempImgList.add(ele.attr("src"));
132.newsTemp.setImageAddrList(tempImgList);
133.}
134.
135.}
136.}
137.
138.publicstaticvoidmain(String[] args)
139.{
140.CrawlHupu crawlHupu =newCrawlHupu();
100.if(newsTemp.getImageAddrList() !=null)
101.System.out.println(newsTemp.getImageAddrList().get(0));
102.System.out.println(newsTemp.getContent());
103.
30.{
31.String html =null;
32.HttpClient httpClient =newDefaultHttpClient();
33.//set proxy ,because of nsn
34.// HttpHost proxy = new HttpHost("10.68.120.11", 3128);
124.for(Element ele:contentElements)
125.{
126.newsTemp.setContent(ele.html());
127.}
128.for(Element ele:imgElements)
129.{
130.List<String> tempImgList =newArrayList<>();
24.
25.publicclassCrawlHupu
26.{
27.privateList<NewsInfo> newsList =newArrayList<>();//用来存储爬取的信息对象
28.
29.publicString GetHtml(String url)//还方法是设置网络链接,是固定的用法
35.// httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
36.
37.//configuration timeout
38.httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,20000);
119.if(!html.isEmpty())
120.{
121.Document doc = Jsoup.parse(html);
122.Elements contentElements = doc.select(cssQueryContent);
123.Elements imgElements = doc.select(cssQueryphoto);
114.//+"div#pageMain>div.pageMainLeft>div.detailWrap>div.detailIntr"
115."div#pageMain>div.pageMainLeft>div.detailWrap>div.detail";
116.//String cssQueryContent = "div.content>div.row>div.column>div#articlewrap.area";
39.
40.HttpGet httpGet =newHttpGet(url);
41.try
42.{
43.HttpResponse httpResponse = httpClient.execute(httpGet);
44.intresStatu = httpResponse.getStatusLine().getStatusCode();
这个类是用来解析网站的内容
重点是:"div#page>div#content>div#local>div#recommend>ul>li>a";
这里用用firefox的firebug组件查看网页的代码结构,不同的网页路径也不一样。
Java代码
1.packagezy.crawl.hupu;
2.
3.importjava.io.IOException;
141.crawlHupu.ParseHtmlForNewsList();
142.
143.}
144.
145.}
2.这个是要获取的信息的类。不多解释。
Java代码
mon;
2.
3.importjava.util.List;
4.
5.publicclassNewsInfo
73.//String cssQueryHupu = "div.content>div.row>div.column>div.row>div.column>div.uibox>div.uibox-con>ul.ui-list>li>a";
74.String cssQueryHupu ="div#mainbody>div.cjkx_mtsd>div.cjkx>ul.list_left>li>a";//这行是用来获取每条对象的标题信息
117.// String cssQueryphoto = "div.hp-wrap>div.voice-main>div.voice-item>ul>li>div.voice-read-detailed>div.voice-photoVideo>"
118.// + "div.voice-photo>div.small-img>img";
19.importorg.apache.http.util.EntityUtils;
20.importorg.jsoup.Jsoup;
21.importorg.jsoup.nodes.Document;
22.importorg.jsoup.nodes.Element;
23.importorg.jsoup.select.Elements;
77.//
78.// String cssQueryIteye = "div#page>div#content>div#local>div#recommend>ul>li>a";
79.if(!html.isEmpty())
80.{
81.Document doc = Jsoup.parse(html,"/");
45.if(resStatu == HttpStatus.SC_OK)
46.{
47.HttpEntity entity = httpResponse.getEntity();
48.if(entity !=null)
49.{
50.html = EntityUtils.toString(entity);
75.// String cssQueryHuxiu = "div.container-hx>div.row-fluid-wrap-hx>"
相关文档
最新文档