php网页抓取(2021-11-17对网页内容的抓取比较比较的感兴趣)

优采云 发布时间: 2022-03-20 18:19

  php网页抓取(2021-11-17对网页内容的抓取比较比较的感兴趣)

  2021-11-17

  我对网页内容的爬取很感兴趣,所以就简单学了。如果我不使用任何框架来抓取网页的内容,感觉有点困难,所以我就简单地做了。这里使用的jsoup框架,抓取网页内容类似于使用jquery选择网页内容,上手速度很快。以下是简单介绍!

  首先是获取网络资源的方法:

   /**

* 获取网络中的超链接

*

* @param urlStr

* 传入网络地址

* @return 返回网页中的所有的超链接信息

*/

public String getInternet(String urlStr, String encoding) {

URL url = null;

URLConnection conn = null;

String nextLine = null;

StringBuffer sb = new StringBuffer();

// 设置系统的代理信息

Properties props = System.getProperties();

props.put("proxySet", "true");

props.put("proxyHost", "10.27.16.212");

props.put("proxyPort", "3128");

System.setProperties(props);

try {

// 获取网络资源

url = new URL(urlStr);

// 获取资源连接

conn = url.openConnection();

conn.setReadTimeout(30000);//设置30秒后超时

conn.connect();

BufferedReader reader = new BufferedReader(new InputStreamReader(

conn.getInputStream(), encoding));

// 开始读取网页信息获取网页中的超链接信息

while ((nextLine = reader.readLine()) != null) {

sb.append(nextLine);

}

} catch (Exception e) {

e.printStackTrace();

}

return sb.toString();

}

  获得网络资源后,我们可以根据自己的需要,筛选出对我们有用的资源。让我们开始抢资源:

  public static void main(String[] args) {

MavenTest test = new MavenTest();

try {

String html = test.getInternet( "http://www.weather.com.cn/html/weather/101020100.shtml#7d","UTF-8");

//将html文档转换为Document文档

Document doc = Jsoup.parse(html);

//获取class为.weatherYubaoBox的div的元素

Elements tableElements = doc.select("div.weatherYubaoBox");

// System.out.println(tableElements.html());

//获取所有的th元素

Elements thElements = tableElements.select("th");

//打印出日期的标题信息

for (int i = 0; i < thElements.size(); i++) {

System.out.print(" "+thElements.get(i).text() + "\t");

}

// 输出标题之后进行换行

System.out.println();

//获取表格的tbody

Elements tbodyElements = tableElements.select("tbody");

for (int j = 1; j < tbodyElements.size(); j++) {

//获取tr中的信息

Elements trElements = tbodyElements.get(j).select("tr");

for (int k = 0; k < trElements.size(); k++) {

//获取单元格中的信息

Elements tdElements = trElements.get(k).select("td");

//根据元素的多少判断出白天和夜晚的

if (tdElements.size() > 6) {

for (int m = 0; m < tdElements.size(); m++) {

System.out.print(tdElements.get(m).text() + "\t");

}

// 白天的数据打印完成后进行换行

System.out.println();

}else{

for(int n =0; n < tdElements.size(); n++){

System.out.print("\t"+tdElements.get(n).text());

}

//打印完成夜间的天气信息进行换行处理

System.out.println();

}

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

  运行结果如下:

  

  最后附上frame的地址:

  分类:

  技术要点:

  相关文章:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线