excel抓取网页数据(我想用java实现抓取我们学校图书馆页面里的图书信息 )

优采云 发布时间: 2021-09-29 21:35

  excel抓取网页数据(我想用java实现抓取我们学校图书馆页面里的图书信息

)

  抓取网页数据我想使用java抓取我们学校图书馆页面中的图书信息,例如:

  请伟大的上帝引导Java网页捕获-----------------编程问答-----------------使用jsoup:

  package cn.outofmemory.yc;<br />

<br />

import java.io.IOException;<br />

import java.util.Scanner;<br />

<br />

import org.apache.commons.httpclient.HttpClient;<br />

import org.apache.commons.httpclient.HttpException;<br />

import org.apache.commons.httpclient.HttpMethod;<br />

import org.apache.commons.httpclient.NameValuePair;<br />

import org.apache.commons.httpclient.methods.GetMethod;<br />

import org.apache.commons.httpclient.methods.PostMethod;<br />

import org.jsoup.Jsoup;<br />

import org.jsoup.nodes.Document;<br />

import org.jsoup.nodes.Element;<br />

import org.jsoup.select.Elements;<br />

<br />

public class httpclient {<br />

<br />

    /**<br />

     * heepclient 抓取页面<br />

     * jroup 解析页面内容<br />

     * @param args<br />

     */<br />

    public static void main(String[] args) {<br />

        Scanner reader=new Scanner(System.in);<br />

        System.out.println("请输入手机号码:");<br />

        String strphone=reader.nextLine();<br />

<br />

        HttpClient client = new HttpClient();<br />

        // 设置代理服务器地址(URL)和端口<br />

        client.getHostConfiguration().setHost( "haoma.imobile.com.cn" , 80);<br />

        HttpMethod method=getPostMethod(strphone);<br />

        try {<br />

            client.executeMethod(method);<br />

            //System.out.println(method.getStatusLine());   //打印结果页面<br />

             String response=new String(method.getResponseBodyAsString());<br />

<br />

//           System.out.println(response);<br />

             //释放连接<br />

             method.releaseConnection();<br />

<br />

             //解析页面内容<br />

             Document doc= Jsoup.parse(response);   //从字符串中加载<br />

             //直接从URL 中加载页面信息。timeout设置连接超时时间 post提交方式 或者get()<br />

//           Document document = (Document) Jsoup.connect("http://haoma.imobile.com.cn/index.php?mob=18710115102").timeout(3000).post();<br />

<br />

            //Elements  是 Element 的集合类<br />

             Elements element=doc.select("table");  //从加载的信息中查找table 标签<br />

<br />

           //从查找到table属性的Elements集合中获取标签 tr 或者tr[class$=alt] 表示 tr标签内class属性=alt<br />

//           Elements titleName=element.select("tr[class$=alt]");   <br />

             Elements titleName=element.select("tr");<br />

             for(Element name : titleName){<br />

                System.out.println(name.text());<br />

            }<br />

        } catch (HttpException e) {<br />

            e.printStackTrace();<br />

        } catch (IOException e) {<br />

            e.printStackTrace();<br />

        }<br />

<br />

    }<br />

<br />

    private static HttpMethod getPostMethod(String phone){<br />

          PostMethod post = new PostMethod( "/index.php" );<br />

          //POST提交则需要通过NameValuePair类来设置参数名和对应的值<br />

          NameValuePair simcard = new NameValuePair( "mob" ,phone);<br />

          post.setRequestBody( new NameValuePair[] {simcard});<br />

          return post; <br />

    } <br />

<br />

    /** <br />

        * 使用 GET 方式提交数据 <br />

        *@return <br />

        */<br />

<br />

       private static HttpMethod getGetMethod(){<br />

          return new GetMethod("/index.php?simcard=1330227");<br />

       }<br />

<br />

}<br />

  --------------------节目问答--------------------您提供的网站只能在学校访问。无论如何,我不能。。您可以使用httpclient。。百度的例子很多。您需要导入一个jar,然后调整代码。编程问答-----------------无法访问外部网络。Jsoup和httpclient都正常

  [使用jsoup实现web爬虫]-----------编程问答-----------------对于普通的爬虫,httpclient感觉不太容易使用。明天我将在你的博客上发布我对JavaJDK的封装

  文件:

  程序包类使用树已过时索引帮助 上一个类下一个类框架无框架所有类概要: 嵌套 | 字段 | 构造器 | 方法详细资料: 字段 | 构造器 | 方法<br />

wrapper<br />

类 Http<br />

<br />

java.lang.Object<br />

wrapper.Http<br />

<br />

public class Http<br />

extends java.lang.Object<br />

对于POST表单的field名没有进行转码处理,只对field的值转码。因为field名都是ASCII字符。 <br />

网站会不定次地发送压缩格式的body,本类不具备解压缩功能。可根据header中的Content-Encoding键对应的值进行判断是不是压缩的。 <br />

一个Http对象只能发起一次请求。要发送多个相关的请求,把返回的cookieStore代入另一个Http对象。<br />

字段概要<br />

<br />

字段 <br />

限定符和类型 字段和说明<br />

java.net.CookieStore cookieStore <br />

构造器概要<br />

<br />

构造器 <br />

构造器和说明<br />

Http(java.lang.String urlString, java.lang.String charset)<br />

构造函数<br />

方法概要<br />

<br />

方法 <br />

限定符和类型 方法和说明<br />

void addPostData(java.lang.String name, java.lang.String value) <br />

void addUploadFile(java.lang.String name, java.lang.String path, java.lang.String rename) <br />

void execute() <br />

java.util.Map getHeaders() <br />

java.io.InputStream getInputStream() <br />

void setHeader(java.lang.String name, java.lang.String value) <br />

void setTimeOut(int millionSeconds) <br />

从类继承的方法 java.lang.Object<br />

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait<br />

字段详细资料<br />

<br />

cookieStore<br />

public java.net.CookieStore cookieStore<br />

构造器详细资料<br />

<br />

Http<br />

public Http(java.lang.String urlString,<br />

    java.lang.String charset)<br />

构造函数<br />

参数:<br />

charset - 页面的字符集编码,即要提交的数据的字符集编码。<br />

方法详细资料<br />

<br />

execute<br />

public void execute()<br />

             throws java.lang.Exception<br />

抛出:<br />

java.lang.Exception<br />

getInputStream<br />

public java.io.InputStream getInputStream()<br />

                                   throws java.lang.Exception<br />

抛出:<br />

java.lang.Exception<br />

getHeaders<br />

public java.util.Map getHeaders()<br />

setHeader<br />

public void setHeader(java.lang.String name,<br />

             java.lang.String value)<br />

setTimeOut<br />

public void setTimeOut(int millionSeconds)<br />

addPostData<br />

public void addPostData(java.lang.String name,<br />

               java.lang.String value)<br />

addUploadFile<br />

public void addUploadFile(java.lang.String name,<br />

                 java.lang.String path,<br />

                 java.lang.String rename)<br />

                   throws java.lang.Exception<br />

参数:<br />

name - fieldname<br />

抛出:<br />

java.lang.Exception<br />

程序包类使用树已过时索引帮助 上一个类下一个类框架无框架所有类概要: 嵌套 | 字段 | 构造器 | 方法详细资料: 字段 | 构造器 | 方法

  --------------------编程问答------------------楼上的那些方法可以看出你有多方便。Jsoup很好

  补充:Java , Web 开发

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线