excel抓取网页数据(我想用java实现抓取我们学校图书馆页面里的图书信息 )
优采云 发布时间: 2021-09-29 21:35excel抓取网页数据(我想用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 开发