java 通过new URL获取指定页面的数据

通过new URL()的方式可以获取网页内容,可是目前想获取的网站 需要登录后才能显示的table内容
从java代码里进入指定的页面没有登录,指定页面没有登录状态无法获取

12个回答

不同的网站具体登录的方法不同,不能给出一个通用的代码。

这里有个登录cnblog网站的例子:
https://www.cnblogs.com/zhangtingkuo/p/3968450.html

关键代码:
Cookie[] cookies = httpClient.getState().getCookies();
这里得到登录的cookie

然后
GetMethod getMethod = new GetMethod(dataUrl);
这样得到的dataUrl的内容,就是登录以后才有的。

可以研究一下使用http client来完成这个功能,登录涉及到会话session,无状态的访问用URL这种方式应该搞不定。

qq_28479035
qq_28479035 好的,我看看呢
一年多之前 回复

有状态的访问 敲错了 尴尬。。

先研究一下网站保持登陆session的cookie等,这样后面请求URL的时候也带上cookie

可以通过设置User-Agent来欺骗服务器。

首先打开网页,再按F12查看源码;

然后抓取你想要的标签,注入LinkedHashMap里面就ok了,很简单是吧!看看例子:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.*;
/**

  • Created by chunmiao on 17-3-10. */ public class ReadBaiduSearch { //储存返回结果 private LinkedHashMap mapOfBaike; //获取搜索信息 public LinkedHashMap getInfomationOfBaike(String infomationWords) throws IOException { mapOfBaike = getResult(infomationWords); return mapOfBaike; } //通过网络链接获取信息 private static LinkedHashMap getResult(String keywords) throws IOException { //搜索的url String keyUrl = "http://baike.baidu.com/search?word=" + keywords; //搜索词条的节点 String startNode = "
    "; //词条的链接关键字 String keyOfHref = "href=\""; //词条的标题关键字 String keyOfTitle = "target=\"_blank\">"; String endNode = "
    "; boolean isNode = false; String title; String href; String rLine; LinkedHashMap keyMap = new LinkedHashMap(); //开始网络请求 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; } //获取词条对应的url private static String getHref(String rLine,String keyOfHref){ String baikeUrl = "http://baike.baidu.com"; String result = ""; if(rLine.contains(keyOfHref)){ //获取url for (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("|||",""); } return result; } }

这不就是传说中的爬虫吗???
你需要什么内容???我想这个东西会不会对你有帮助?
https://blog.csdn.net/android_app/article/details/80454623

python爬虫走一个

网站有验证码 一直搞不进去

共12条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!