java爬虫 页面class都一样怎么办

爬取某招聘网站数据,工作经验和项目经验class一致,工作经验内各个时间段的工作经验class还是一致,如何拆分

1个回答

最好能上个样例.自己寻找规律自定义吧.一般现在的网站为了防止非法抓取数据都是做一些防护的.

plazyj
navyzhengyj 前程无忧hr端,问题自己解决了,但是解决方式性能不是很好
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Java_爬虫,如何抓取Js动态生成数据的页面?

<div class="iteye-blog-content-contain" style="font-size: 14px;"> <p> </p> <p> </p> <p> </p> <p>很多网站是用js或Jquery 生成数据的,到后台获取到数据以后,用 document.write()或者("#id").html="" 的方式 写到页面中,这个时候用浏览器查看源码是看不到数据的。<br><br>HttpClient是不行的,看网上说HtmlUnit,说  可以获取后台js加载完后的完整页面,但是我按照文章上说的 写了 ,都不好使。</p> <pre name="code" class="java">String url = "http://xinjinqiao.tprtc.com/admin/main/flrpro.do"; try { WebClient webClient = new WebClient(BrowserVersion.FIREFOX_10); //设置webClient的相关参数 webClient.getOptions().setJavaScriptEnabled(true); webClient.getOptions().setCssEnabled(false); webClient.setAjaxController(new NicelyResynchronizingAjaxController()); //webClient.getOptions().setTimeout(50000); webClient.getOptions().setThrowExceptionOnScriptError(false); //模拟浏览器打开一个目标网址 HtmlPage rootPage = webClient.getPage(url); System.out.println("为了获取js执行的数据 线程开始沉睡等待"); Thread.sleep(3000);//主要是这个线程的等待 因为js加载也是需要时间的 System.out.println("线程结束沉睡"); String html = rootPage.asText(); System.out.println(html); } catch (Exception e) { } </pre> <p> </p> <p>其实这段代码不好使。<br><br><br>求解答,其中典型的就是这个链接的页面,怎么能在java程序中获取其中的数据?<br><br>http://xinjinqiao.tprtc.com/admin/main/flrpro.do</p> <p> </p> <p> </p> </div>

Java爬虫爬取知乎首页,结果显示为一对中括号,使用的eclipse码的代码。

以下的代码是我照着网上的一篇文章写的,最后出现以下错误: 这是Main类 package aZhihu; import java.util.ArrayList; public class Main { public static void main(String[] args) { // 定义即将访问的链接 String url = "http://www.zhihu.com/explore/recommendations"; // 访问链接并获取页面内容 String content = Spider.SendGet(url); // 获取该页面的所有的知乎对象 ArrayList<Zhihu> myZhihu = Spider.GetZhihu(content); // 打印结果 System.out.println( myZhihu); } } 这是爬虫类: import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Spider { static String SendGet(String url) { // 定义一个字符串用来存储网页内容 String result = ""; // 定义一个缓冲字符输入流 BufferedReader in = null; try { // 将string转成url对象 URL realUrl = new URL(url); // 初始化一个链接到那个url的连接 URLConnection connection = realUrl.openConnection(); // 开始实际的连接 connection.connect(); // 初始化 BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader( connection.getInputStream(), "UTF-8")); // 用来临时存储抓取到的每一行的数据 String line; while ((line = in.readLine()) != null) { // 遍历抓取到的每一行并将其存储到result里面 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; } static ArrayList<Zhihu> GetZhihu(String content) { // 预定义一个ArrayList来存储结果 ArrayList<Zhihu> results = new ArrayList<Zhihu>(); // 用来匹配标题 Pattern questionPattern = Pattern.compile("question_link.+?>(.+?)<"); Matcher questionMatcher = questionPattern.matcher(content); // 用来匹配url,也就是问题的链接 Pattern urlPattern = Pattern.compile("question_link.+?href=\"(.+?)\""); Matcher urlMatcher = urlPattern.matcher(content); // 问题和链接要均能匹配到 boolean isFind = questionMatcher.find() && urlMatcher.find(); while (isFind) { // 定义一个知乎对象来存储抓取到的信息 Zhihu zhuhuTemp = new Zhihu(); zhuhuTemp.question = questionMatcher.group(1); zhuhuTemp.zhihuUrl = "http://www.zhihu.com" + urlMatcher.group(1); // 添加成功匹配的结果 results.add(zhuhuTemp); // 继续查找下一个匹配对象 isFind = questionMatcher.find() && urlMatcher.find(); } return results; } } 这里是一个zhihu类。存放爬取来的问题 import java.util.ArrayList; public class Zhihu { public String question;// 问题 public String zhihuUrl;// 网页链接 public ArrayList<String> answers;// 存储所有回答的数组 // 构造方法初始化数据 public Zhihu() { question = ""; zhihuUrl = ""; answers = new ArrayList<String>(); } @Override public String toString() { return "问题:" + question + "\n链接:" + zhihuUrl + "\n回答:" + answers + "\n"; } }

flex java结合页面初始化

<pre name="code" class="java">initialize="view1_initializeHandler(event)" </pre> <p> 在容器里我用这个方法初始化,然后调用remoteObjec访问java方法,返回个结果</p> <pre name="code" class="flex"> var reObj:RemoteObject=new RemoteObject(); reObj.destination="initdService"; reObj.endpoint="http://localhost:8080/BL/messagebroker/amf"; reObj.findHotPicList(); reObj.addEventListener(ResultEvent.RESULT,function(re:ResultEvent):void{ re.stopImmediatePropagation(); hotPicList=ArrayCollection(re.token.result); }); if(hotPicList!=null){*****}</pre> <p> 可是为什么总是第一次没结果,但是看java控制台确实已经调用了,只有再进这个页面时结果才出来。</p>

java采集页面显示202状态

最近测试采集公共资源交易的页面,出来202问题,无法采集最终页面内容,希望给予页面采集的完整JAVA代码,谢谢! 附测试代码: package asptest; import java.io.IOException; import java.net.URI; import org.apache.http.HttpRequest; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.params.CookiePolicy; import org.apache.http.client.protocol.ClientContext; import org.apache.http.impl.client.BasicCookieStore; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.client.DefaultHttpRequestRetryHandler; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.cookie.BasicClientCookie2; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; import org.apache.http.protocol.BasicHttpContext; import org.apache.http.protocol.ExecutionContext; import org.apache.http.protocol.HttpContext; import org.apache.http.util.EntityUtils; /* * author:合肥工业大学 管院学院 钱洋 *1563178220@qq.com */ public class Testggzy { public static void main(String[] args) throws ClientProtocolException, IOException, InterruptedException { getRawHTML("http://www.ggzy.gov.cn/information/html/b/500000/0201/201808/30/005073ad2bc4036b4335a46cf421674b341f.shtml"); } public static String getRawHTML ( String url ) throws ClientProtocolException, IOException, InterruptedException{ //初始化 DefaultHttpClient httpclient = new DefaultHttpClient(); httpclient.getParams().setParameter("http.protocol.cookie-policy", CookiePolicy.BROWSER_COMPATIBILITY); //设置参数 HttpParams params = httpclient.getParams(); //连接时间 HttpConnectionParams.setConnectionTimeout(params, 6000); HttpConnectionParams.setSoTimeout(params, 6000*20); //超时重新请求次数 DefaultHttpRequestRetryHandler dhr = new DefaultHttpRequestRetryHandler(5,true); HttpContext localContext = new BasicHttpContext(); HttpRequest request2 = (HttpRequest) localContext.getAttribute( ExecutionContext.HTTP_REQUEST); httpclient.setHttpRequestRetryHandler(dhr); BasicCookieStore cookieStore = new BasicCookieStore(); BasicClientCookie2 cookie = new BasicClientCookie2("Content-Type","text/html;charset=UTF-8"); BasicClientCookie2 cookie1 = new BasicClientCookie2("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36"); cookieStore.addCookie(cookie); cookieStore.addCookie(cookie1); localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore); HttpGet request = new HttpGet(); request.setURI(URI.create(url)); HttpResponse response = null; String rawHTML = ""; response = httpclient.execute(request,localContext); int StatusCode = response.getStatusLine().getStatusCode(); //获取响应状态码 System.out.println(StatusCode); if(StatusCode == 200){ //状态码200表示响应成功 //获取实体内容 rawHTML = EntityUtils.toString (response.getEntity()); System.out.println(rawHTML); //输出实体内容 EntityUtils.consume(response.getEntity()); //消耗实体 }else { //关闭HttpEntity的流实体 EntityUtils.consume(response.getEntity()); //消耗实体 Thread.sleep(20*60*1000); //如果报错先休息30分钟 } httpclient.close(); System.out.println(rawHTML); return rawHTML; } }

java爬网页中,输出的网页中文全是乱码

``` package com.lib; import java.io.BufferedReader; import java.io.InputStreamReader; import org.apache.http.HttpEntity; import org.apache.http.HttpStatus; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; public class HttpGetUtils { public String get(String url){ String result = ""; try{ CloseableHttpClient httpclient = HttpClients.createDefault(); HttpGet httpget = new HttpGet(url); CloseableHttpResponse response = httpclient.execute(httpget); try{ if (response != null && response.getStatusLine().getStatusCode() == HttpStatus.SC_OK ){ System.out.println(response.getStatusLine()); HttpEntity entity = response.getEntity(); System.out.println(entity.getContentEncoding()); result = readResponse(entity, "UTF-8"); } } finally{ httpclient.close(); response.close(); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } return result; } public String readResponse(HttpEntity entity, String charset){ StringBuffer res = new StringBuffer(); BufferedReader reader = null; try{ if (entity == null){ return null; } else{ reader = new BufferedReader(new InputStreamReader(entity.getContent(),charset)); String line; while ( (line = reader.readLine()) != null){ line = line + "\n"; res.append(line); } } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } finally{ try{ if (reader != null){ reader.close(); } } catch(Exception e){ e.toString(); } } return res.toString(); } } ```

JAVA htmlunit 抓取不到 页面 元素

下面代码中 能获取到百度页面的Form 表单, 但是获取不到另外一个 网页的表单, 此时该如何处理? ps:获取另外一个网页的源码保存html后,用浏览器打开,能看到 form 表单。 package com.xttx.cn.fetchpro.fetchImp; import java.io.IOException; import java.net.URL; import java.util.List; import com.gargoylesoftware.htmlunit.BrowserVersion; import com.gargoylesoftware.htmlunit.CollectingAlertHandler; import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException; import com.gargoylesoftware.htmlunit.HttpWebConnection; import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.WebRequest; import com.gargoylesoftware.htmlunit.html.HtmlForm; import com.gargoylesoftware.htmlunit.html.HtmlPage; import com.xttx.cn.fetchpro.exception.PageNotFoundException; public class SimulationFetch { protected static WebClient webClient = null; public WebClient getWebClient() { return webClient; } public void setWebClient(WebClient webClient) { this.webClient = webClient; } static WebRequest request = null; public static void main(String[] args) throws FailingHttpStatusCodeException, IOException, PageNotFoundException, InterruptedException { // TODO Auto-generated method stub BrowserVersion.FIREFOX_24.setBrowserLanguage("zh-CN"); BrowserVersion.FIREFOX_24.setSystemLanguage("zh-CN"); BrowserVersion.FIREFOX_24.setUserLanguage("zh-CN"); BrowserVersion.FIREFOX_24.setUserAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0"); BrowserVersion.FIREFOX_24.setBrowserVersion(46.0f); BrowserVersion.FIREFOX_24.setCpuClass("x64"); webClient = new WebClient(BrowserVersion.FIREFOX_24); webClient.setWebConnection(new HttpWebConnection(webClient)); webClient.getCache().clear(); webClient.getCookieManager().clearCookies(); webClient.getOptions().setJavaScriptEnabled(true); webClient.setJavaScriptTimeout(60*1000); webClient.getOptions().setCssEnabled(true); webClient.getOptions().setActiveXNative(true); webClient.getOptions().setPopupBlockerEnabled(true); webClient.getOptions().setRedirectEnabled(true); webClient.getOptions().setTimeout(10000); webClient.getOptions().setDoNotTrackEnabled(true); webClient.getCookieManager().setCookiesEnabled(true); webClient.getOptions().setThrowExceptionOnFailingStatusCode(true); webClient.getOptions().setThrowExceptionOnScriptError(false); webClient.getOptions().setUseInsecureSSL(true); webClient.getOptions().setSSLInsecureProtocol("TLSv1.2"); webClient.setAjaxController(new NicelyResynchronizingAjaxController()); webClient.setAlertHandler(new CollectingAlertHandler()); HtmlPage loginPageWithForm =(HtmlPage)webClient.getPage(new WebRequest(new URL("https://login.youzan.com/sso/index?service=kdt&from_source=pzshouye"))); List<HtmlForm> htmlForm0 = loginPageWithForm.getForms(); HtmlPage loginPageNoForm = (HtmlPage)webClient.getPage(new WebRequest(new URL("https://www.baidu.com/"))); HtmlForm htmlForm = loginPageNoForm.getForms().get(0); System.out.println("---"); } }

java.net.SocketException: Connection reset 解決方式

public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Test test = new Test(); test.myRun(); } private static void myRun(){ List<Map<String, Object>> etfList= getETFName_db(); //getETFDebtInfo(etfList,"ETFBasicsINfo",1);//添加ETF基础数据(Name ,类型,基金家族) 已經添加完成 String url=null; List<Map<String, Object>> etfErrorList=new ArrayList<Map<String ,Object>>(); int count=0;// for(int i=0;i<etfList.size();i++){ int num=0; String chart=etfList.get(i).get("Ticker").toString(); //https://query1.finance.yahoo.com/v7/finance/chart/"+chart+"?range=10y&interval=1d&indicators=quote" //+ "&includeTimestamps=true&includePrePost=false&corsDomain=finance.yahoo.com" try { url="https://query1.finance.yahoo.com/v7/finance/chart/"+chart+"?range=10y&interval=1d&indicators=quote" + "&includeTimestamps=true&includePrePost=false&corsDomain=finance.yahoo.com"; while(Run(url)==0){ num++; if(num<3){ continue; }else { Map<String, Object>ETFMap =new HashMap<>(); ETFMap.put("ETF", chart); etfErrorList.add(ETFMap); break; } } } catch (Exception e) { // TODO: handle exception if(num<3){ count++; } System.out.println(chart+"出錯"); } } getETFDebtInfo(etfErrorList,"ETFBasicsINfo",2); if(etfErrorList.size()>0){ System.out.println("添加完成!共"+count+"条!"); System.out.println("失败"+etfErrorList.size()+"条!"); System.out.println("失败信息:"+etfErrorList); }else{ System.out.println("全部添加完成!共"+count+"条!"); } } @SuppressWarnings("unchecked") private static int Run(String url){ Map<String,Object> htmlMap=new HashMap<>();//1 Map<String,Object> chartMap=new HashMap<>();//2 List<Map<String, Object>> mapList=new ArrayList<Map<String,Object>>();//3 Map<String,Object>map4=new HashMap<>();//4 cUrl c=new cUrl(); String html=null; try { html=c.httpGet(url);//得到一个html 页面元素 if(html == null || html.length() < 10){ return 0; } } catch (Exception e) { // TODO: handle exception } htmlMap= (Map<String, Object>) JSONObject.parse(html);//把该页面元素转成JSON对象 存如Map for (String charkey : htmlMap.keySet()){ chartMap=(Map<String, Object>) htmlMap.get(charkey); for (String chartkey : chartMap.keySet()) {//2 if(chartMap.get(chartkey)!=null){ mapList=(List<Map<String, Object>>) chartMap.get(chartkey); map4=(Map<String, Object>) mapList.get(0).get("meta"); getETFDebtInfo(mapList,map4.get("symbol").toString(),0); } } } return 1; } private static void getETFDebtInfo(List<Map<String, Object>> getETFDebtInfoList,String ETFName,int num) { String RobomongDBName=null; switch (num) { case 0: RobomongDBName="ETFDebtInfo"; break; case 1: RobomongDBName="ETFBasicsINfo"; break; case 2: RobomongDBName="ETFErrorLog"; break; default: break; } List<Map<String, Object>> mfo = getETFDebtInfoList; Map<String, Object> kMap = new HashMap<>(); kMap.put(ETFName, mfo); String kJson = JSON.toJSONString(kMap); MGDB mgdb = new MGDB(); mgdb.DBEnd(); mgdb.SetCollection(RobomongDBName); Map<String, Object> wMap = new HashMap<>(); Map<String, Object> eMap = new HashMap<>(); eMap.put(mgdb.exists, 1); wMap.put(RobomongDBName, eMap); String wjson = JSON.toJSONString(wMap); mgdb.JsonWhere(wjson); mgdb.Delete(); mgdb.Insert(kJson); mgdb.Close(); System.out.println("添加"+RobomongDBName+"数据 ok!"); }

小白请教高手,python爬取数据遇到js隐藏div怎么办

请教一下,我最近想在政府房管部门网站爬取房产备案信息,地址:http://www.dyyscx.com/newhouse/house_table.aspx?id=828279 每个楼盘表下有个“查看”链接,点击后就会在原页面生成新的备案内容。 这一部分内容使用元素检查是可以看见的,但查看源代码却看不见。 使用network查看XHR发现有个文件“GetBuildTableByAjax.ashx”,这里面的preview中就有相关信息。 截取片段是这样的: ``` 物业类别:住宅 销售状态:抵预 建筑面积:117.260平米 总价:71.65万元' class='border-333333'>3单元&nbsp;3-25-1</td><td width='95' height='30' style='cursor:hand;cursor:point;' bgcolor='#FDDFAB' Title='物业类别:住宅 销售状态:抵预 建筑面积:89.730平米 总价:53.89万元' class='border-333333'>3单元&nbsp;3-25-2</td><td width='95' height='30' style='cursor:hand;cursor:point;' bgcolor='#FDDFAB' Title='物业类别:住宅 销售状态:抵预 建筑面积:120.870平米 总价:70.87万元' class='border-333333'>3单元 ``` 我看了下,原网页head里面有一段Scirpt,内容是这样的: ``` <script type="text/javascript"> function GetData(item, bulid) { var heightobj = document.body.scrollHeight; var widthobj = document.body.scrollWidth; $("div.overdiv").css("width", widthobj).css("height", heightobj).css("left", "0").css("top", "0").show(); //获得显示的位置 var height = document.body.scrollTop + document.documentElement.scrollTop; widthobj = (document.body.clientWidth - 199) / 2; heightobj = (document.documentElement.clientHeight - 60) / 2 + height; //显示该div $("div.select").css("left", widthobj).css("top", heightobj).show(); $.post("GetBuildTableByAjax.ashx", { itemRecord: item, houseCode: bulid }, function (data) { document.getElementById("BuildTable").innerHTML = data; $("div.select").hide(); $("div.overdiv").hide(); }); } </script>' ``` 因为是小白,所以猜想是js隐藏了新内容的标签,导致不在原网页的源代码中显示,所以爬不到内容。 请教一下我猜想的是否正确,以及我要怎么才能获得备案信息的内容。 ps:最好是能贴个完整的方法,谢谢!!!!!!!!!

java HttpURLConnection 模拟 返回和预计的不一样

访问的地址是:http://aq.qq.com/cn2/login_limit/login_limit_index public final static String CONTENT_TYPE = "Content-Type"; public static void main(String[] args) throws Exception { // login // 验证码的位置 // Content content = getRandom("GET", // "http://localhost:8080/back/random.action", null, null, false,"d:/"); Content content = getRandom( "GET", "http://captcha.qq.com/getimage?aid=2001601&0.6973676234483719", null, null, false, "d:/"); // build request headers & do rate of user review List<String> lsit = content.getHeaders().get("Set-Cookie"); Map<String, String> resmap = new HashMap<String, String>(); String cookie = ""; if (lsit != null) { StringBuffer sb = new StringBuffer(); boolean isLast = false; int i = 0; for (String val : lsit) { i++; if (i == lsit.size()) { isLast = true; } int pos = val.indexOf("="); if (pos != -1) { String cookieName = val.substring(0, pos); String cookieVal = val.substring(pos + 1); System.out.println(cookieName + ":" + cookieVal); cookieVal = cookieVal.split(";")[0]; if (isLast) { sb.append(cookieName + "=" + cookieVal); } else { sb.append(cookieName + "=" + cookieVal + ";"); } } } cookie = sb.toString(); } String a = ""; System.out.print("请输入验证码:"); BufferedReader strin = new BufferedReader(new InputStreamReader( System.in)); try { a = strin.readLine(); } catch (IOException e) { e.printStackTrace(); } System.out.println("输入的数是:" + a); String userCode = "admin"; String account = "1158752036"; // String loginUrl = "http://localhost:9090/w/login.action"; String rateReviewUrl = "http://aq.qq.com/cn2/ajax/check_verifycode?verify_code=" + URLEncoder.encode(a, "utf-8") + "&account=" + URLEncoder.encode(account, "utf-8") + "&session_type=" + URLEncoder.encode("on_rand", "utf-8"); // String rateReviewUrl = // "http://fdjkpoi.xicp.net/udp/baseinfo/getQQ.action"; Map<String, String> paramMap = new HashMap<String, String>(); // content = curl("POST", loginUrl, paramMap, resmap, false, ""); System.out .println("第一次 content.getBody()= " + content == null ? "no body" : content.getBody()); // build request headers & do rate of user review // paramMap = new HashMap<String, String>(); content = curl("get", rateReviewUrl, paramMap, cookie, false, ""); // inFile(content.getBody(), "D:/sss.txt"); } public static Content curl(String method, // 方法类型 String sUrl,// 要解析的URL Map<String, String> paramMap, // 存放用户名和密码的map String requestHeaderMap,// 存放COOKIE的map boolean isOnlyReturnHeader, String path) throws Exception {// 存放文件路径 System.out.println("-------------" + sUrl + "-------------------"); Content content = null; try { URL getUrl = new URL(sUrl); // 根据拼凑的URL,打开连接,URL.openConnection函数会根据URL的类型, // 返回不同的URLConnection子类的对象,这里URL是一个http,因此实际返回的是HttpURLConnection HttpURLConnection connection = (HttpURLConnection) getUrl .openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty("Accept", "application/json, text/javascript, */*"); connection.setRequestProperty("Accept-Encoding", "UTF-8"); connection.setRequestProperty("Connection", "keep-alive"); connection.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.8"); connection.setRequestProperty("Cookie", requestHeaderMap); // 进行连接,但是实际上get request要在下一句的connection.getInputStream()函数中才会真正发到 // 服务器 connection.connect(); // 取得输入流,并使用Reader读取 BufferedReader reader = new BufferedReader(new InputStreamReader( connection.getInputStream(),"UTF-8")); String lines; while ((lines = reader.readLine()) != null) { System.out.println(lines); } reader.close(); // 断开连接 connection.disconnect(); } catch (Exception e) { return null; } finally { } return content; } public static Content getRandom(String method, String sUrl,// 要解析的url Map<String, String> paramMap, // 存放用户名和密码的map Map<String, String> requestHeaderMap,// 存放COOKIE的map boolean isOnlyReturnHeader, String path) { Content content = null; HttpURLConnection httpUrlConnection = null; InputStream in = null; try { URL url = new URL(sUrl); boolean isPost = "POST".equals(method); if (method == null || (!"GET".equalsIgnoreCase(method) && !"POST" .equalsIgnoreCase(method))) { method = "POST"; } URL resolvedURL = url; URLConnection urlConnection = resolvedURL.openConnection(); httpUrlConnection = (HttpURLConnection) urlConnection; httpUrlConnection.setRequestMethod(method); httpUrlConnection.setRequestProperty("Accept-Language", "zh-cn,zh;q=0.5"); // Do not follow redirects, We will handle redirects ourself httpUrlConnection.setInstanceFollowRedirects(false); httpUrlConnection.setDoOutput(true); httpUrlConnection.setDoInput(true); httpUrlConnection.setConnectTimeout(5000); httpUrlConnection.setReadTimeout(5000); httpUrlConnection.setUseCaches(false); httpUrlConnection.setDefaultUseCaches(false); httpUrlConnection.connect(); int responseCode = httpUrlConnection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED) { byte[] bytes = new byte[0]; if (!isOnlyReturnHeader) { DataInputStream ins = new DataInputStream(httpUrlConnection .getInputStream()); // 验证码的位置 DataOutputStream out = new DataOutputStream( new FileOutputStream(path + "/code.bmp")); byte[] buffer = new byte[4096]; int count = 0; while ((count = ins.read(buffer)) > 0) { out.write(buffer, 0, count); } out.close(); ins.close(); } String encoding = null; if (encoding == null) { encoding = getEncodingFromContentType(httpUrlConnection .getHeaderField(CONTENT_TYPE)); } content = new Content(sUrl, new String(bytes, encoding), httpUrlConnection.getHeaderFields()); } } catch (Exception e) { return null; } finally { if (httpUrlConnection != null) { httpUrlConnection.disconnect(); } } return content; } public static String getEncodingFromContentType(String contentType) { String encoding = null; if (contentType == null) { return null; } StringTokenizer tok = new StringTokenizer(contentType, ";"); if (tok.hasMoreTokens()) { tok.nextToken(); while (tok.hasMoreTokens()) { String assignment = tok.nextToken().trim(); int eqIdx = assignment.indexOf('='); if (eqIdx != -1) { String varName = assignment.substring(0, eqIdx).trim(); if ("charset".equalsIgnoreCase(varName)) { String varValue = assignment.substring(eqIdx + 1) .trim(); if (varValue.startsWith("\"") && varValue.endsWith("\"")) { // substring works on indices varValue = varValue.substring(1, varValue.length() - 1); } if (Charset.isSupported(varValue)) { encoding = varValue; } } } } } if (encoding == null) { return "UTF-8"; } return encoding; } // 这个是输出 public static boolean inFile(String content, String path) { PrintWriter out = null; File file = new File(path); try { if (!file.exists()) { file.createNewFile(); } out = new PrintWriter(new FileWriter(file)); out.write(content); out.flush(); return true; } catch (Exception e) { e.printStackTrace(); } finally { out.close(); } return false; } public static String getHtmlReadLine(String httpurl) { String CurrentLine = ""; String TotalString = ""; InputStream urlStream; String content = ""; try { URL url = new URL(httpurl); HttpURLConnection connection = (HttpURLConnection) url .openConnection(); connection.connect(); System.out.println(connection.getResponseCode()); urlStream = connection.getInputStream(); BufferedReader reader = new BufferedReader( new InputStreamReader(urlStream, "utf-8")); while ((CurrentLine = reader.readLine()) != null) { TotalString += CurrentLine + "\n"; } content = TotalString; } catch (Exception e) { } return content; } } class Content { private String url; private String body; private Map<String, List<String>> m_mHeaders = new HashMap<String, List<String>>(); public Content(String url, String body, Map<String, List<String>> headers) { this.url = url; this.body = body; this.m_mHeaders = headers; } public String getUrl() { return url; } public String getBody() { return body; } public Map<String, List<String>> getHeaders() { return m_mHeaders; } 贴上代码, 1158752036 QQ号已经被冻结,但是返回是 {"Err":"0" } 我输入没有冻结的QQ号 返回的也一样,输入错误的验证码,返回是 {"Err":"您输入的验证码有误" },证明已经通了,不知是否这个地址 还有其他的参数吗? 小白一个往大神教导

java jsoup怎么获取最后一个html里的a标签

代码如下 ``` Document doc = Jsoup.parse(input, "UTF-8", ""); Elements hrefss = doc.select("td"); for (Element elem : hrefss) { if (elem.hasClass("good")) { System.out.println(elem.text()); } } ``` 这样输出的是html里的<td> class等于good的 <a>标签 有很多但是我只想获取最后一个 怎么写

python爬虫时为什么网页源码经过xpth处理后无法解析了呢

## 在爬取一个小说网站的时候我发现在网页的response中可以看到相关的值,但是在获取的时候就出现了问题 ### 具体问题是这样的, - 爬取的网站链接为:https://www.qiushuzw.com/t/38890/10253657.html ``` from lxml import etree import requests class Xiaoshuospider: def __init__(self): self.start_url = 'https://www.qiushuzw.com/t/38890/10253656.html' self.headers = { "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3", "Accept-Encoding": "gzip, deflate, br", "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", "Cache-Control": "max-age=0", "Connection": "keep-alive", "Cookie": "BAIDU_SSP_lcr=https://www.80txt.com/txtml_38890.html; Hm_lvt_c0ce681e8e9cc7e226131131f59a202c=1554447305; Hm_lpvt_c0ce681e8e9cc7e226131131f59a202c=1554447305; UM_distinctid=169ec4788554ea-0eba8d0589d979-1a201708-15f900-169ec4788562c1; CNZZDATA1263995655=929605835-1554443240-https%253A%252F%252Fwww.80txt.com%252F%7C1554443240", "Host": "www.qiushuzw.com", "If-Modified-Since": "Thu, 31 Jan 2019 03:00:17 GMT", "If-None-Match": 'W/"5c5264c1 - 3f30"', "Referer": "https://www.80txt.com/txtml_38890.html", "Upgrade-Insecure-Requests": "1", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36", } def parse(self): res = requests.get(self.start_url,headers=self.headers).content.decode() html = etree.HTML(res) content = html.xpath("div[@class='book_content']/text()") print(content) def run(self): self.parse() if __name__ == '__main__': xiaoshuo = Xiaoshuospider() xiaoshuo.run() ``` - 根据xpath规则我将这些信息处理以后无法找到相应小说文本内容,小说的详细信息无法使用xpath提取出来 ## 有没有哪位大佬也遇到相应的问题

python爬虫如何抓取包含JavaScript的网页中的信息

这里本科生一枚。。做本研要求抓取一些数据碰到了一些问题求指教> < 我想要抓取汽车之家上关于供应商的一些数据,然后在车型详情页里找到了关于供应商的框架源代码如下(只截取有用部分): <script type="text/javascript"> //属性 document.domain = "autohome.com.cn"; var page=1; var parameters = { isPage:0, pageCount:0, kindId:-1, vId:23867, pId: 110000, cId: 110100, sId: 0, cityUrl: '/frame/cms/GetProvinceCityList?SpecId=23867&SeriesId=0&roid1=2', url: "/frame/spec/{vId}/{pId}/{cId}/{sId}/{orderType}/{pageIndex}/{pageSize}?isPage={isPage}&seriesId={seriesId}&source={source}&kindId={kindId}" , kindUrl:"/frame/cms/GetKindBySpec?specId={vId}&provinceId={pId}&cityId={cId}&countyId={sId}", panel:"#dealer-box", pageSize:5, pageIndex: 1, orderType :0, seriesId:66, source:"defalut" }; $("[name='orderBy']").click(function() { parameters.orderType = $(this).attr('data-order'); $("#orderCan .current").attr("class", "linkname"); $(this).attr("class", "linkname current"); //parameters.pageIndex = 1; var firstPage = $("#dealerListPager a[data=1]").eq(0); if (firstPage.length == 1) { firstPage.click(); } else { load(); } return false; }); seajs.config({version:"1460100712877"}); var $$; seajs.use(['jquery','pop'], function ($) { $$=$; }); $(function(){ jQuery("#orderCan a").each(function(){ if($(this).attr("data-order")==parameters.orderType) { $("#orderCan .current").attr("class","linkname"); $(this).attr("class","linkname current"); } }) }) </script> <script type="text/javascript" src="http://x.autoimg.cn/dealer/bbs/js/DealerArea20160413.js?t=2016041421"></script> 里面包含的信息应该怎么抓取呢?我是通过selenium来进入网页的框架,这些js应该怎么解析?我尝试着用前面的那些parameter凑出来URL,但是输入到浏览器中就会跳转到汽这个网站的首页,用urllib2打开的话会报错Error 10060,但是网什么的也都没有问题,是我的IP被封了还是需要一个什么特殊的代理?? 本科期间只学过python的两门课,对java没什么了解,求帮助呀QAQ谢谢大家啦

请问关于java 通过http client抓取网页信息返回:请开启JavaScript并刷新该页

初学httpClient,想去抓取某个网页查询出来的结果信息,通过浏览器监控发现response出来的信息和java控制台打印出来的不一样。 ``` package com.test; import java.io.IOException; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.ResponseHandler; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; public class Test2 { public static void main(String[] args) { try { CloseableHttpClient httpclient = HttpClients.createDefault(); ResponseHandler<String> responseHandler = new ResponseHandler<String>() { public String handleResponse(final HttpResponse response) throws ClientProtocolException, IOException { int status = response.getStatusLine().getStatusCode(); if (status >= 200 && status < 300) { HttpEntity entity = response.getEntity(); return entity != null ? EntityUtils.toString(entity, "utf-8") : null; } else { throw new ClientProtocolException( "Unexpected response status: " + status); } } }; HttpGet httpGet = new HttpGet("http://zhixing.court.gov.cn/search"); String strResult = httpclient.execute(httpGet, responseHandler); System.out.println(strResult); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } ``` ![控制台打印](https://img-ask.csdn.net/upload/201604/21/1461213492_294659.png)![图片说明](https://img-ask.csdn.net/upload/201604/21/1461213611_459310.jpg)

网络爬虫下载网页的问题

下载网页时只能下载第一个网页,后续网页虽然能爬出来,但是无法下载到本地。下载网页的代码如下 public class FileDownLoader { /**根据 url 和网页类型生成需要保存的网页的文件名 *去除掉 url 中非文件名字符 */ public String getFileNameByUrl(String url,String contentType) { url=url.substring(7);//remove http:// if(contentType.indexOf("html")!=-1)//text/html { url= url.replaceAll("[\\?/:*|<>\"]", "_")+".html"; return url; } else//如application/pdf { return url.replaceAll("[\\?/:*|<>\"]", "_")+"."+ contentType.substring(contentType.lastIndexOf("/")+1); } } /**保存网页字节数组到本地文件 * filePath 为要保存的文件的相对地址 */ private void saveToLocal(byte[] data,String filePath) { try { DataOutputStream out=new DataOutputStream( new FileOutputStream(new File(filePath))); for(int i=0;i<data.length;i++) out.write(data[i]); out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); } } /*下载 url 指向的网页*/ public String downloadFile(String url) { String filePath=null; /* 使用 GetMethod 来访问一个 URL 对应的网页,需要如下一些步骤。 1 生成一个 HttpClinet 对象并设置相应的参数。 2 生成一个 GetMethod 对象并设置响应的参数。 3 用 HttpClinet 生成的对象来执行 GetMethod 生成的 Get 方法。 4 处理响应状态码。 5 若响应正常,处理 HTTP 响应内容。 6 释放连接*/ /* 1.生成 HttpClinet 对象并设置参数*/ HttpClient httpClient=new HttpClient(); //设置 Http 连接超时 5s httpClient.getHttpConnectionManager().getParams(). setConnectionTimeout(5000); /*2.生成 GetMethod 对象并设置参数*/ //使用 GetMethod 来访问一个 URL 对应的网页 GetMethod getMethod=new GetMethod(url); //设置 get 请求超时 5s getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT,5000); //设置请求重试处理,用的是默认的重试处理:请求三次 getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler()); /*3.执行 HTTP GET 请求*/ try{ /*executeMethod返回值是一个整数,表示了执行该方法后服务器返回的状态码, 该状态码能表示出该方法执行是否成功,需要认证或者页面发生了跳转(默认状态下GetMethod的实例是自动处理跳转的)*/ int statusCode = httpClient.executeMethod(getMethod); //判断访问的状态码 if (statusCode != HttpStatus.SC_OK) { System.err.println("Method failed: "+ getMethod.getStatusLine()); filePath=null; } /*4.处理 HTTP 响应内容(返回的状态码正确后,即可取得内容)*/ /*取得目标地址的内容有三种方法: 1 getResponseBody,该方法返回的是目标的二进制的byte流; 2 getResponseBodyAsString,返回的是String类型,值得注意的是该方法返回的String的编码是根据系统默认的编码方式,所以返回的String值可能编码类型有误 3 getResponseBodyAsStream,这个方法对于目标地址中有大量数据需要传输是最佳的。 在这里我们使用了最简单的getResponseBody方法。*/ byte[] responseBody = getMethod.getResponseBody();//读取为字节数组 //根据网页 url 生成保存时的文件名 filePath="E:\\java\\web spider\\"+getFileNameByUrl(url, getMethod.getResponseHeader("Content-Type").getValue()); saveToLocal(responseBody,filePath); } catch (HttpException e) { // 发生致命的异常,可能是协议不对或者返回的内容有问题 System.out.println("Please check your provided http address!"); e.printStackTrace(); } catch (IOException e) { // 发生网络异常 e.printStackTrace(); } finally { // 释放连接 getMethod.releaseConnection(); } return filePath; } } 调用他的爬行代码如下: public class Crawler { /* 使用种子 url 初始化 URL 队列*/ String results=""; private void initCrawlerWithSeeds(String[] seeds) { for(int i=0;i<seeds.length;i++) LinkDB.addUnvisitedUrl(seeds[i]); } /* 爬取方法*/ public void crawling(String[] seeds,JTextArea kkk) { LinkFilter filter = new LinkFilter(){ //提取以 用户输入的URL开头的链接 public boolean accept(String url) { if(url.startsWith(url)) return true; else return false; } }; //初始化 URL 队列 initCrawlerWithSeeds(seeds); //循环条件:待抓取的链接不空且抓取的网页不多于 1000 while(!LinkDB.unVisitedUrlsEmpty()&&LinkDB.getVisitedUrlNum()<=1000) { //队头 URL 出对 String visitUrl=LinkDB.unVisitedUrlDeQueue(); if(visitUrl==null) continue; FileDownLoader downLoader=new FileDownLoader(); //下载网页 downLoader.downloadFile(visitUrl); //该 url 放入到已访问的 URL 中 LinkDB.addVisitedUrl(visitUrl); //提取出下载网页中的 URL Set<String> links=HtmlParserTool.extractLinks(visitUrl,filter); Iterator<String> it = links.iterator(); //迭代器 while(it.hasNext()) { results=results+'\n'+it.next(); } kkk.setText(results); } } } 求各位大神帮忙解答,马上就要中期检查了

Jsoup爬取数据超时,已设置timeout

``` package cn.xls.util; import cn.xls.pojo.City; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** * @program: * @description: 获取城市信息 * @author: l */ public class CityInfoUtil { public static List<City> getProvinceData(String requestUrl) { List<City> lists = new ArrayList<City>(); try { Document document = Jsoup.connect(requestUrl).timeout(50000).maxBodySize(0).get(); //获取所有的省份 Elements provinceList = document.select("tr[class='provincetr']").select("td").select("a"); //遍历省份 for (Element element : provinceList) { //拼接当前省份下的城市地址 String url1 = requestUrl.replace("index.html", element.attr("href")); Document document1 = Jsoup.connect(url1).timeout(50000).maxBodySize(0).get(); //获取该省份下所有城市(第一列为城市区号,第二列为城市名) Elements citys = document1.select("tr[class='citytr']").select("td:eq(1)").select("a"); String province = element.html(); System.out.println("当前省份 : " + province); System.out.println("当前省份下有 : " + citys.size() + " 个城市"); //遍历城市 int cityCount = 0; for (Element element1 : citys) { // System.out.println("城市 : " + element1.html()); //拼接当前城市下的区域地址 String url2 = requestUrl.replace("index.html", element1.attr("href")); Document document2 = Jsoup.connect(url2).timeout(50000).maxBodySize(0).get(); //获取该城市下所有区域(第一列为区域区号,第二列为区域名) Elements areas = document2.select("tr[class=countytr] td:eq(1)").select("a"); String city = element1.html(); System.out.println("当前城市 : " + (++cityCount) + city); System.out.println("当前城市下有 : " + areas.size() + " 个区"); for (Element element2 : areas) { System.out.println("区域 : " + element2.html()); } } System.out.println("-----------"); } } catch (IOException e) { e.printStackTrace(); } return lists; } //测试 public static void main(String[] args) { //List<City> lists = getProvinceData("http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2017/index.html"); List<City> list1 = getProvinceData("http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2018/index.html"); } } ``` 测试时老是打印了一个七八个城市的数据后就超时,请问该怎么解决啊?刚从网上学的jsoup,请大佬们多多指点

求救 数据库中内容正常,可通过java提出来输出到控制台之后就全是乱码了

![图片说明](https://img-ask.csdn.net/upload/201710/13/1507868635_25868.png) --------------------------------------------------------------------------------------- 数据库的内容是由朋友写的爬虫爬取出来的内容,汉字部分一切正常 --------------------------------------------------------------------------------------- ![图片说明](https://img-ask.csdn.net/upload/201710/13/1507868652_242290.png) --------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------- ![图片说明](https://img-ask.csdn.net/upload/201710/13/1507868659_50083.png) --------------------------------------------------------------------------------------- 上面两个图是数据库中表的属性,似乎已经全部设置成utf8了, java debug和以及java文件和工程编码之类的也都调成utf8了。 --------------------------------------------------------------------------------------- 但一由java提取出来并且输出到控制台测试之后就全变成乱码了 --------------------------------------------------------------------------------------- ![图片说明](https://img-ask.csdn.net/upload/201710/13/1507868739_305836.png) --------------------------------------------------------------------------------------- 代码应该也没问题,很头疼,求大神指导!拜托!万分感谢,代码如下 public static final String url = "jdbc:mysql://localhost:3306/test?&useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false"; public static final String name = "com.mysql.jdbc.Driver"; public static final String user = "root"; public static final String password = "*********"; public Connection conn = null; public PreparedStatement pst = null; public MySQLConnect(String sql) { try { Class.forName(name);// 指定连接类型 conn = DriverManager.getConnection(url, user, password);// 获取连接 pst = conn.prepareStatement(sql);// 准备执行语句 } catch (Exception e) { e.printStackTrace(); } } public void close() { try { this.conn.close(); this.pst.close(); } catch (SQLException e) { e.printStackTrace(); } } --------------------------------------------------------------------------------------- static String sql = null; static MySQLConnect db1 = null; static ResultSet ret = null; public static void main(String[] args) { sql = "select *from test";//SQL语句 db1 = new MySQLConnect(sql);//创建DBHelper对象 try { ret = db1.pst.executeQuery();//执行语句,得到结果集 while (ret.next()) { String uid = ret.getString(1); String ufname = ret.getString(2); String ulname = ret.getString(3); String udate = ret.getString(4); System.out.println(uid + "\t" + ufname + "\t" + ulname + "\t" + udate ); }//显示数据 ret.close(); db1.close();//关闭连接 } catch (SQLException e) { e.printStackTrace(); } } }

使用selenium 获取b标签的内容

` <div class="pop-buttons"> <a class="btn btn-primary" href="http://pan.baidu.com/s/1hi" target="_blank" title="TheFace &#8211; 响应 Opencart 主题">百度网盘下载</a> <p class="fontlarg"> 提取码:<b>8300</b> </code> </p> <p> 付费支持 <a target="_blank" href="http://wpa.qq.com/msgrd&site=qq&menu=yes"><img border="0" src="http://wpa.qq.com/pa?p=2:130200251:51" alt="增值服务在线客服" /></a> <a class="adimg"href="http://www.weidea.net/sg/" target="_blank" title="松果互联专业主题汉化主题模版插件开发">详情</a> </p> </div> ` 使用selenium的By.xpath获取b标签的内容,但是一直都没法成功! java 取值代码: ` WebElement a1 = driver.findElement(By.xpath(/div[1]/p[1]/b[1]); System.out.println(a1.getText()); ` 哪位大侠能帮忙看一下?

怎么爬取京东商城特定商品的在线评论数据

基于商品在线评论的顾客关注信息分析系统 功能要求: 1)爬取京东商城特定商品的在线评论数据; 2)从在线评论数据中提取顾客关注信息; 3)对顾客关注信息进行分类统计,并进行图表展示; 4)所有爬取、分析信息通过Web实现定制与展示;

htmlunit+jsoup爬取知乎视频,获取的html字符串中缺少视频信息,如何解决?

大神帮忙看一下 今天使用htmlunit+jsoup爬取知乎网站的视频,发现爬取到的html中缺少视频的信息,无法进行下一步了 知乎视频网址:https://video.zhihu.com/video/1157743087110549504?autoplay=false&useMSE= 浏览器检查中查看到的视频信息 ![图片说明](https://img-ask.csdn.net/upload/201910/12/1570872018_377176.png) java代码 ``` @Test public void testttt() { final WebClient webClient = new WebClient(BrowserVersion.CHROME);//新建一个模拟谷歌Chrome浏览器的浏览器客户端对象 webClient.getOptions().setThrowExceptionOnScriptError(false);//当JS执行出错的时候是否抛出异常, 这里选择不需要 webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);//当HTTP的状态非200时是否抛出异常, 这里选择不需要 webClient.getOptions().setActiveXNative(false); webClient.getOptions().setCssEnabled(false);//是否启用CSS, 因为不需要展现页面, 所以不需要启用 webClient.getOptions().setJavaScriptEnabled(true); //很重要,启用JS webClient.setAjaxController(new NicelyResynchronizingAjaxController());//很重要,设置支持AJAX HtmlPage page = null; try { page = webClient.getPage("https://video.zhihu.com/video/1157743087110549504?autoplay=false&useMSE=");//尝试加载上面图片例子给出的网页 // page = webClient.getPage("http://ent.sina.com.cn/film/");//尝试加载上面图片例子给出的网页 } catch (Exception e) { e.printStackTrace(); }finally { webClient.close(); } webClient.waitForBackgroundJavaScript(30000000);//异步JS执行需要耗时,所以这里线程要阻塞30秒,等待异步JS执行结束 String pageXml = page.asXml();//直接将加载完成的页面转换成xml格式的字符串 System.out.println(pageXml); //TODO 下面的代码就是对字符串的操作了,常规的爬虫操作,用到了比较好用的Jsoup库 // Document document = Jsoup.parse(pageXml);//获取html文档 // List<Element> infoListEle = document.getElementById("feedCardContent").getElementsByAttributeValue("class", "feed-card-item");//获取元素节点等 // infoListEle.forEach(element -> { // System.out.println(element.getElementsByTag("h2").first().getElementsByTag("a").text()); // System.out.println(element.getElementsByTag("h2").first().getElementsByTag("a").attr("href")); // }); } ``` 运行程序打印的html如下: ![图片说明](https://img-ask.csdn.net/upload/201910/12/1570872108_470794.png) 有大神遇到过这个问题吗?帮忙看一下

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

C++(数据结构与算法)78:---分而治之

一、分而治之的思想 分而治之方法与软件设计的模块化方法非常相似 分而治之通常不用于解决问题的小实例,而要解决一个问题的大实例。一般步骤为: ①把一个大实例分为两个或多个更小的实例 ②分别解决每个小实例 ③把这些小实例的解组合成原始大实例的解 二、实际应用之找出假币 问题描述 一个袋子有16个硬币,其中只有一个是假币,这个假币比其他的真币重量轻(其他所有真币的重量都是相同的)...

springboot+jwt实现token登陆权限认证

一 前言 此篇文章的内容也是学习不久,终于到周末有时间码一篇文章分享知识追寻者的粉丝们,学完本篇文章,读者将对token类的登陆认证流程有个全面的了解,可以动态搭建自己的登陆认证过程;对小项目而已是个轻量级的认证机制,符合开发需求;更多精彩原创内容关注公主号知识追寻者,读者的肯定,就是对作者的创作的最大支持; 二 jwt实现登陆认证流程 用户使用账号和面发出post请求 服务器接受到请求后使用私...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

win10暴力查看wifi密码

刚才邻居打了个电话说:喂小灰,你家wifi的密码是多少,我怎么连不上了。 我。。。 我也忘了哎,就找到了一个好办法,分享给大家: 第一种情况:已经连接上的wifi,怎么知道密码? 打开:控制面板\网络和 Internet\网络连接 然后右击wifi连接的无线网卡,选择状态 然后像下图一样: 第二种情况:前提是我不知道啊,但是我以前知道密码。 此时可以利用dos命令了 1、利用netsh wlan...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

程序员写出这样的代码,能不挨骂吗?

当你换槽填坑时,面对一个新的环境。能够快速熟练,上手实现业务需求是关键。但是,哪些因素会影响你快速上手呢?是原有代码写的不够好?还是注释写的不够好?昨夜...

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

!大部分程序员只会写3年代码

如果世界上都是这种不思进取的软件公司,那别说大部分程序员只会写 3 年代码,恐怕就没有程序员这种职业。

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

早上躺尸,晚上干活:硅谷科技公司这么流行迟到?

硅谷科技公司上班时间OPEN早已不是什么新鲜事,早九晚五是常态,但有很多企业由于不打卡,员工们10点、11点才“姗姗来迟”的情况也屡见不鲜。 这种灵活的考勤制度为人羡慕,甚至近年来,国内某些互联网企业也纷纷效仿。不过,硅谷普遍弹性的上班制度是怎么由来的呢?这种“流行性迟到”真的有那么轻松、悠哉吗? 《动态规划专题班》 课程试听内容: 动态规划的解题要领 动态规划三大类 求最值/计数/可行性 常...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

Python爬虫,高清美图我全都要(彼岸桌面壁纸)

爬取彼岸桌面网站较为简单,用到了requests、lxml、Beautiful Soup4

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

Java岗开发3年,公司临时抽查算法,离职后这几题我记一辈子

前几天我们公司做了一件蠢事,非常非常愚蠢的事情。我原以为从学校出来之后,除了找工作有测试外,不会有任何与考试有关的事儿。 但是,天有不测风云,公司技术总监、人事总监两位大佬突然降临到我们事业线,叫上我老大,给我们组织了一场别开生面的“考试”。 那是一个风和日丽的下午,我翘着二郎腿,左手端着一杯卡布奇诺,右手抓着我的罗技鼠标,滚动着轮轴,穿梭在头条热点之间。 “淡黄的长裙~蓬松的头发...

立即提问
相关内容推荐