2017-09-11 4 views
1

내가 뭘 원하는 단순히 지금까지 내가Jsoup 유튜브 제목을 검색

title = doc.getElementById("eow-title").text(); 

을 수행하여 Jsoup에 이것을 달성하지만 지금은 유튜브가 레이아웃의 변경 것을하는 유튜브 페이지의 제목을 검색입니다 태그가 더 이상 존재하지 않는다면, 나는 you tubehtml 코드를 검사하여 youtube player 내부에 <script> 태그라는 제목이 붙어 있다는 것을 알았습니다. 문제는 다음과 같은 형식으로되어 있습니다.

var ytplayer = ytplayer || {}; ytplayer.config = { "메시지": { "player_fallback": [ "웹 사이트의 콘텐츠를 새로 고치려면 Adobe Flash Player가 필요합니다. HTML5. \ u003ca href = \"https : //get.adobe .COM/flashplayer/\ "\ u003eScarica 난 울티마 versione 디 플래시 플레이어 \ u003c/A \ u003E 페이지 \ u003ca HREF = \"/ HTML5 \ "\ u003eUlteriori informazioni sull'aggiornamento 유엔 브라우저 HTML5 \의 u003c/A \ u003e "]},"args ": {"vm ":"CAIQABgE ","iv_invideo_url ":"https://www.youtube.com/annotations_invideo?cap_hist=1\u0026video_id=wckFsik_vU8\u0026client=1\u0026ei= JY-2WfHPFIWxcpzcrKAF ","watch_xlb ":"https://s.ytimg.com/yts/xlbbin/watch-strings-it_IT-vflA6zD4C.xlb ","pltype ":"contentugc ","author ":"BrawlBRSTMs3 X ", "제목 ":"Big Blue - F-Zero Music확장"는"innertube_api_version ":"V1 ","이벤트 ID ":"JY-2WfHPFIWxcpzcrKAF "

은 어쩌면 내가 수동으로 일부 regex와 제목을 구문 분석 할 수 있을까? 내가 뭔가를 밖으로 작동 regex 대해 충분히 모르겠지만, 제발 도와주세요.

P. 나는 벌써 doc.getTitle();을 쓸모 없게 시도했다. 나는 전체 제목 대신에 "유튜브"를 얻는다. pleft이 해결

, 내가 코드를 조금 수정했다 그러나 이것은 내가 그것을 작동했습니다 방법입니다

doc = Jsoup.connect(getLink()).get(); 
Elements script = doc.select("script"); //to get the script content 
Pattern p = Pattern.compile("\"title\":\"(.+?)\""); // Regex for the getting the string: "title":"blah blah blah" 
Matcher m = p.matcher(script.html()); 
m.find(); 
title = m.group().substring(8); 
+0

FYI :'doc.getTitle();'은 태그 사이의 텍스트를 가져옵니다. 분명히 "YouTube"입니다. @pleft의 솔루션은 상당히 견고합니다! – <span class="text-secondary"> <small> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/3977134/">r3dst0rm</a></span> <span></span> </small> </span> </p> </div> </div> </div> </div> </div> </article> </div> <div class="answer-title"> <span class="text-logo margin-top-sm">A</span> <h2 class="title h4">답변</h2> </div> <div class="item-description text-md markdown-body margin-bottom-40 voidso"> <article class="board-top-1 padding-top-10"> <div class="post-col vote-info"> <span class="count">1<i class="fa fa-thumbs-up"></i></span> <i class="fa fa-check fa-2x"></i> </div> <div class="post-offset"> <div class="answer fmt"> <p>엡 <code class="prettyprint-override">regex</code>이 트릭을 할 것입니다. 다음과 같은 시도 할 수 있습니다 :</p> <pre><code class="prettyprint-override">Element script = doc.select("script").first(); //to get the script content Pattern p = Pattern.compile("\"title\":\"(.+?)\""); // Regex for the getting the string: "title":"blah blah blah" Matcher m = p.matcher(script.html()); while(m.find()) { System.out.println(m.group()); } </code></pre> </div> <div class="post-info"> <div class="post-meta row"> <p class="text-secondary col-lg-6"> <span class="source"> <a rel="noopener" target="_blank" href="https://stackoverflow.com/q/46158246">출처</a> </span> </p> <p class="text-secondary col-lg-6"> <span class="float-right date"> <span>2017-09-11 14:33:46</span> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/3635454/">pleft</a></span> </p> <p class="col-12"></p> <p class="col-12"></p></div> </div> </div> </article> <div> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="1038284119" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <article class="board-top-1 padding-top-10"> <div class="post-col vote-info"> <span class="count">0<i class="fa fa-thumbs-up"></i></span> </div> <div class="post-offset"> <div class="answer fmt"> <p>당신은 수있는 소스에서 <code class="prettyprint-override">player</code> 사업부를 읽어보세요, 그리고 그 <code class="prettyprint-override">div</code> 내부의 <code class="prettyprint-override">script</code>에서 <code class="prettyprint-override">title</code>을 찾을 수 있습니다. 다음은 <code class="prettyprint-override">JSOUP</code>을 사용한 작업 샘플입니다. 그러면 "제목": "실제 제목"이 인쇄됩니다. 필요에 따라 업데이트하십시오.</p> <pre><code class="prettyprint-override">Document doc = Jsoup.connect("https://www.youtube.com/watch?v=lhs_chrfXfE").timeout(10000).get(); Elements player = doc.select("div#player"); for(Element e:player){ Elements scriptContent = e.getElementsByTag("script"); for (Element paragraph : scriptContent) { System.out.println(paragraph.attr("script")); for (DataNode node : paragraph.dataNodes()) { Pattern pattern = Pattern.compile("\"title\":\"(.+?)\""); Matcher matcher = pattern.matcher(node.getWholeData()); if(matcher.find()) { **//***this is your title***** System.out.println(matcher.group(0)); } } } } } </code></pre> </div> <div class="post-info"> <div class="post-meta row"> <p class="text-secondary col-lg-6"> <span class="source"> <a rel="noopener" target="_blank" href="https://stackoverflow.com/q/46159516">출처</a> </span> </p> <p class="text-secondary col-lg-6"> <span class="float-right date"> <span>2017-09-11 15:43:25</span> <a rel="noopener" target="_blank" href="https://stackoverflow.com/users/1425331/">Jimmy</a></span> </p> <p class="col-12"></p> <p class="col-12"></p></div> </div> </div> </article> </div> <div class="clearfix"> </div> <div> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-6208739752673518" data-ad-slot="1575177025"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="padding-top-10"></div> </div> </div> <script type="text/javascript" src="http://img.uwenku.com/uwenku/script/side.js?t=1644592048821"></script> <script type="text/javascript" src="http://img.uwenku.com/uwenku/plugin/highlight/highlight.pack.js"></script> <link href="http://img.uwenku.com/uwenku/plugin/highlight/styles/docco.css" media="screen" rel="stylesheet" type="text/css" /> <script type="text/javascript"> $('pre').each(function(i, e) { hljs.highlightBlock(e, "<span class='indent'> </span>", false) }); </script> <div class="col-lg-3 col-md-4 col-sm-5"> <div id="rightTop"> <div class="row"> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="5415218910" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="row sidebar panel panel-default"> <div class="panel-heading font-bold"> 최근 질문 </div> <div class="m-b-sm m-t-sm clearfix"> <ul class="side_article_list"> <li class="side_article_list_item"> 1. <a href="http://ko.uwenku.com/question/p-kdsgwxcx-na.html" target="_blank" title="은 개체 숫자 값"> 은 개체 숫자 값 </a> </li> <li class="side_article_list_item"> 2. <a href="http://ko.uwenku.com/question/p-kdluoyxq-nu.html" target="_blank" title="잘못된 인수 HttpURLConnection"> 잘못된 인수 HttpURLConnection </a> </li> <li class="side_article_list_item"> 3. <a href="http://ko.uwenku.com/question/p-ftxpwwdi-mp.html" target="_blank" title="클라이언트 측과 서버 측 연결이 socket.io에서 작동하지 않습니다."> 클라이언트 측과 서버 측 연결이 socket.io에서 작동하지 않습니다. </a> </li> <li class="side_article_list_item"> 4. <a href="http://ko.uwenku.com/question/p-meazvmed-ms.html" target="_blank" title="컨텍스트 오류"> 컨텍스트 오류 </a> </li> <li class="side_article_list_item"> 5. <a href="http://ko.uwenku.com/question/p-ahzcwqob-mk.html" target="_blank" title="! = null을 확인한 경우에도 Excel.Range가 null을 throw합니다."> ! = null을 확인한 경우에도 Excel.Range가 null을 throw합니다. </a> </li> <li class="side_article_list_item"> 6. <a href="http://ko.uwenku.com/question/p-xvksyxoi-kz.html" target="_blank" title="jquery에서 비어있는 텍스트 상자 값 가져 오기"> jquery에서 비어있는 텍스트 상자 값 가져 오기 </a> </li> <li class="side_article_list_item"> 7. <a href="http://ko.uwenku.com/question/p-slmjygay-ko.html" target="_blank" title=", 연결 풀에서 연결이"> , 연결 풀에서 연결이 </a> </li> <li class="side_article_list_item"> 8. <a href="http://ko.uwenku.com/question/p-tasqqcin-ks.html" target="_blank" title="iOS10 UIImageWriteToSavedPhotosAlbum는 TCC__CRASHING_DUE_TO_PRIVACY_VIOLATION"> iOS10 UIImageWriteToSavedPhotosAlbum는 TCC__CRASHING_DUE_TO_PRIVACY_VIOLATION </a> </li> <li class="side_article_list_item"> 9. <a href="http://ko.uwenku.com/question/p-bkdiddwd-hr.html" target="_blank" title="laravel datatables 견인 금액 사이의 필터"> laravel datatables 견인 금액 사이의 필터 </a> </li> <li class="side_article_list_item"> 10. <a href="http://ko.uwenku.com/question/p-bbxvjoot-em.html" target="_blank" title="iOS 설정 번들 in react native"> iOS 설정 번들 in react native </a> </li> </ul> </div> </div> </div> <p class="article-nav-bar"></p> <div class="row sidebar article-nav"> <div class="row box_white visible-sm visible-md visible-lg margin-zero"> <div class="top"> <h3 class="title"><i class="glyphicon glyphicon-th-list"></i> 관련 문제</h3> </div> <div class="article-relative-content"> <ul class="side_article_list"> <li class="side_article_list_item">관련 문제 없음^_^</li> </ul> </div> </div> </div> </div> </div> </div> </div><!-- wrap end--> <!-- footer --> <footer id="footer"> <div class="bg-simple lt"> <div class="container"> <div class="row padder-v m-t"> <div class="col-xs-8"> <ul class="list-inline"> <li><a href="http://ko.uwenku.com/contact">문의하기</a></li> <li>© 2020 KO.UWENKU.COM</li> <li><a target="_blank" href="https://beian.miit.gov.cn/">沪ICP备13005482号-4</a></li> <li><script type="text/javascript" src="https://v1.cnzz.com/z_stat.php?id=1280101193&web_id=1280101193"></script></li> <li><a href="http://www.uwenku.com/" target="_blank" title="优文库">简体中文</a></li> <li><a href="http://hk.uwenku.com/" target="_blank" title="優文庫">繁體中文</a></li> <li><a href="http://ru.uwenku.com/" target="_blank" title="поле вопросов и ответов">Русский</a></li> <li><a href="http://de.uwenku.com/" target="_blank" title="Frage - und - antwort - Park">Deutsch</a></li> <li><a href="http://es.uwenku.com/" target="_blank" title="Preguntas y respuestas">Español</a></li> <li><a href="http://hi.uwenku.com/" target="_blank" title="कार्यक्रम प्रश्न और उत्तर पार्क">हिन्दी</a></li> <li><a href="http://it.uwenku.com/" target="_blank" title="IL Programma di chiedere Park">Italiano</a></li> <li><a href="http://ja.uwenku.com/" target="_blank" title="プログラム問答園区">日本語</a></li> <li><a href="http://ko.uwenku.com/" target="_blank" title="프로그램 문답 단지">한국어</a></li> <li><a href="http://pl.uwenku.com/" target="_blank" title="program o park">Polski</a></li> <li><a href="http://tr.uwenku.com/" target="_blank" title="Program soru ve cevap parkı">Türkçe</a></li> <li><a href="http://vi.uwenku.com/" target="_blank" title="Đáp ứng viên">Tiếng Việt</a></li> <li><a href="http://fr.uwenku.com/" target="_blank" title="Programme interrogation Park">Française</a></li> </ul> </div> </div> </div> </div> </div> </footer> <!-- / footer --> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?f78a970f17b19a79fc477a3378096f29"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </body> </html>