이 글에서는 Java에서 URL을 사용하여 웹 콘텐츠를 캡처하는 방법
할 일이 없고 git을 원격 위치에 배포하는 방법을 방금 배웠습니다. 서비스 서버는 할 일이 없어서 그냥 웹페이지 정보를 캡쳐하기 위한 작은 도구를 만들어 그 안에 있는 값 중 일부를 매개변수로 설정하면, 확장 성능이 더 좋을 수도 있습니다! 이것이 좋은 시작이 되어 String을 더 능숙하게 읽을 수 있기를 바랍니다. JAVA1.8이 문자열을 연결하기 위해 String을 사용한다는 점은 주목할 가치가 있습니다. String의 성능을 크게 최적화하는 StringBulider로 연결하고 싶은 문자열. 더 이상 고민할 필요 없이 내 XXX 코드를 보여주세요~
작동 효과:
먼저 바이두 백과사전을 열고 "배우"와 같은 용어를 검색한 다음 F12를 눌러 소스 코드를 확인하세요
그런 다음 원하는 태그를 잡고 Linked해시Map을 삽입하세요. 안에는 괜찮아요, 아주 간단하죠? 코드를 보세요 罗
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<String,String> mapOfBaike; //获取搜索信息 public LinkedHashMap<String,String> getInfomationOfBaike(String infomationWords) throws IOException { mapOfBaike = getResult(infomationWords); return mapOfBaike; } //通过网络链接获取信息 private static LinkedHashMap<String, String> getResult(String keywords) throws IOException { //搜索的url String keyUrl = "http://baike.baidu.com/search?word=" + keywords; //搜索词条的节点 String startNode = "<dl class=\"search-list\">"; //词条的链接关键字 String keyOfHref = "href=\""; //词条的标题关键字 String keyOfTitle = "target=\"_blank\">"; String endNode = "</dl>"; boolean isNode = false; String title; String href; String rLine; LinkedHashMap<String,String> keyMap = new LinkedHashMap<String,String>(); //开始网络请求 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("<em>|</em>|</a>|<a>",""); } return result; } }
위 내용은 Java에서 URL을 사용하여 웹 콘텐츠를 캡처하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!