2012-11-13 95 views
0

我想知道如何通過java在網站上搜索。我想先在網站上搜索一個詞。然後網站將返回一些鏈接。我想點擊這些鏈接。他們會將我重定向到另一個頁面,最後我會從該頁面獲取數據。我檢查了jsoup爲了解析html頁面,但我不知道如何在網站上進行搜索並使用java單擊鏈接。通過java在網站上搜索

+1

Httpclient lib? – smk

+0

您能澄清更多關於搜索功能嗎?什麼是鏈接的理想來源? Apache Lucene可能對您有所幫助。 – amit

+0

網站上有一個搜索框。我想搜索一種藥物的屬性。所以當我在搜索框中寫入藥物名稱時,它會返回一個鏈接。所以我點擊這個鏈接。我在另一個html頁面上顯示藥物的屬性。 –

回答

1

您需要make HTTP requests,就像瀏覽器一樣。使用例如Network panel in Google Chrome來查看Chrome手動執行搜索時發生的HTTP請求,忽略那些無關緊要的代碼並編寫代碼來模擬那些做的事情。

爲了找到正確的搜索結果來請求(「點擊」),您也需要使用類似jsoup的東西。

您可以使用硒代替,但這將是荒謬的重量級,除非該網站使用一些複雜的Javascript或插件來執行搜索,這是不太可能的。

+0

我會在我的谷歌應用程序引擎項目中使用,所以我真的在尋找不重量級或難以使用的東西 –

+0

是的,只是重申一下,我說你不應該使用Selenium,你應該使用HTTP請求API。 –

+0

順便說一下,Google App Engine擁有自己的抓取網頁的抓取服務。無論您使用的是JDK還是JDK,都無關緊要,JDK也可以使用App Engine上的獲取服務。 –

0

首先,您應該熟悉HTTP請求協議。然後,編寫你的網站變成一個套接字服務器是一件簡單的事情,當你連接到你的時候發送一些有意義的數據。 我只使用socket,os和sys庫在Python中創建了一個Web服務器。

基本HTTP協議是 ,客戶端將發送服務器

GET /path/file.extension HTTP/1.0 < - 基本上得到是的請求的類型,/path/file.extension基本文件被請求。和HTTP/1.0是協議 主機:yourwebsite.url < - 我不認爲這是必要的 用戶代理:HTTPTool/1.0 < - 基本上就像他們用來發送HTTP請求的方法,如Chrome或火狐 [空白]

,服務器將響應種像 HTTP/1.0 200 OK < - 再次,協議,則該消息(404沒有找到,等) 日期:星期一,2012年11月19日14:15:45 GMT < - 這不是必需的,但你可能還包括它 內容類型:文本/ HTML < - 您發送的內容類型,HTML是文本/ HTML也是圖像拉鍊等。只是谷歌它(這很簡單) 內容長度:12313131 < - 數據的長度(以字符爲單位)。這是需要 [空白]
< HTML>
<頭>
< H2>嗨</H2>
< /頭「
<體>
歡迎來到我的船尾
</BODY>
</html>
然後服務器發送數據後,它關閉套接字。在Java中爲 ,字符串長度爲:
String blah =「foobar」; int length = blah。長度();

有關套接字在Java中的詳細信息閱讀:http://docs.oracle.com/javase/tutorial/networking/sockets/index.html
之後,它是存儲要查找數組中的單詞和處理數據發送到客戶端的問題。你也希望能夠理解POST。之後,你所做的就是獲得他們想要看到的文件,並將其提供給他們。當他們搜索某些東西時,在數據庫中查找它返回鏈接或返回找不到的項目。

+0

其實我已經做了你所說的。我打開tcp連接來逐字節讀取網站,但然後我必須再次解析返回的html頁面。我希望找到另一種解決方案。 –

+0

實際上,在進一步閱讀您希望做的事情之後,您可以做的是您可以簡單地進行維基百科搜索。 http://en.wikipedia.org/w/api.php?action=opensearch&search= 將返回可能鏈接的數組(?)。然後,鏈接只是en.wikipedia.org/wiki/ 是指向您的頁面的鏈接。我只是循環遍歷它們並鏈接它們。 – <span class="text-secondary"> <small> <span></span> </small> </span> </p> </div> </div> </div> <div itemprop="comment" class="post-comment"> <div class="row"> <div class="col-lg-1"><span class="text-secondary">+0</span></div> <div class="col-lg-11"> <p class="commenttext">@AhmetTanakol如果你已經完成了這個工作,你應該在問題中說明這一點! – <span class="text-secondary"> <small> <span></span> </small> </span> </p> </div> </div> </div> </div> </div> </article> <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>看看這個例子。下載最新的罐子<a href="http://sourceforge.net/projects/htmlunit/files/latest/download?source=files" rel="nofollow">HtmlUnit</a>。創建新項目導入這些jar並添加以下類。希望你能達到你要求的目標。</p> <pre><code class="prettyprint-override">package com.examples.htmlunit; import java.io.IOException; import java.net.URL; import java.util.List; import com.gargoylesoftware.htmlunit.BrowserVersion; import com.gargoylesoftware.htmlunit.Page; import com.gargoylesoftware.htmlunit.RefreshHandler; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlAnchor; import com.gargoylesoftware.htmlunit.html.HtmlForm; import com.gargoylesoftware.htmlunit.html.HtmlPage; import com.gargoylesoftware.htmlunit.html.HtmlTable; import com.gargoylesoftware.htmlunit.html.HtmlTableRow; public class YahooMail { public static void main(String[] args) throws Exception { // Create and initialize WebClient object WebClient webClient = new WebClient(BrowserVersion.FIREFOX_2); webClient.setThrowExceptionOnScriptError(false); webClient.setRefreshHandler(new RefreshHandler() { public void handleRefresh(Page page, URL url, int arg) throws IOException { System.out.println("handleRefresh"); } }); // visit Yahoo Mail login page and get the Form object HtmlPage page = (HtmlPage) webClient.getPage("https://login.yahoo.com/config/login_verify2?.intl=us&amp;.src=ym"); HtmlForm form = page.getFormByName("login_form"); // Enter login and passwd form.getInputByName("login").setValueAttribute("@@@@@@@"); form.getInputByName("passwd").setValueAttribute("@@@@@@@"); // Click "Sign In" button/link page = (HtmlPage) form.getInputByValue("Sign In").click(); // Click "Inbox" link HtmlAnchor anchor = (HtmlAnchor)page.getHtmlElementById("WelcomeInboxFolderLink"); page = (HtmlPage) anchor.click(); // Get the table object containing the mails HtmlTable dataTable = (HtmlTable) page.getHtmlElementById("datatable"); // Go through each row and count the row with class=msgnew int newMessageCount = 0; List rows = (List) dataTable.getHtmlElementsByTagName("tr"); for (HtmlTableRow row: rows) { if (row.getAttribute("class").equals("msgnew")) { newMessageCount++; } } // Print the newMessageCount to screen System.out.println("newMessageCount = " + newMessageCount); //System.out.println(page.asXml()); } } </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/13373661">來源</a> </span> </p> <p class="text-secondary col-lg-6"> <span class="float-right date"> <span>2012-11-14 05:48:02</span> </p> <p class="col-12"></p> <p class="col-12"></p></div> </div> </div> </article> </div> <div class="clearfix"> </div> <div class="relative-box"> <div class="relative">相關問題</div> <ul class="relative_list"> <li> 1. <a href="http://hk.uwenku.com/question/p-ebprclhw-bn.html" target="_blank" title="Google在網站上搜索"> Google在網站上搜索 </a> </li> <li> 2. <a href="http://hk.uwenku.com/question/p-zxglxwoh-bkd.html" target="_blank" title="允許Android SDK通過網站搜索?"> 允許Android SDK通過網站搜索? </a> </li> <li> 3. <a href="http://hk.uwenku.com/question/p-nyxsqztn-x.html" target="_blank" title="如何在網站搜索的任何網站上搜索"> 如何在網站搜索的任何網站上搜索 </a> </li> <li> 4. <a href="http://hk.uwenku.com/question/p-adqjitev-bkb.html" target="_blank" title="在Java中訪問網站搜索框"> 在Java中訪問網站搜索框 </a> </li> <li> 5. <a href="http://hk.uwenku.com/question/p-xugofegz-bhm.html" target="_blank" title="網站搜索網站"> 網站搜索網站 </a> </li> <li> 6. <a href="http://hk.uwenku.com/question/p-tiaxbssa-zp.html" target="_blank" title="搜索網站"> 搜索網站 </a> </li> <li> 7. <a href="http://hk.uwenku.com/question/p-zjjruoir-bkz.html" target="_blank" title="搜索網站,"> 搜索網站, </a> </li> <li> 8. <a href="http://hk.uwenku.com/question/p-qubbqmac-hg.html" target="_blank" title="在ASP.NET MVC網站上實現搜索"> 在ASP.NET MVC網站上實現搜索 </a> </li> <li> 9. <a href="http://hk.uwenku.com/question/p-avefpiwa-mw.html" target="_blank" title="在Excel上進行網站搜索"> 在Excel上進行網站搜索 </a> </li> <li> 10. <a href="http://hk.uwenku.com/question/p-yiiatlsn-vk.html" target="_blank" title="在網站上搜索文件夾"> 在網站上搜索文件夾 </a> </li> <div> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-6208739752673518" data-ad-slot="4606349252"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <li> 11. <a href="http://hk.uwenku.com/question/p-cibfidkr-rt.html" target="_blank" title="在分類網站上搜索實施"> 在分類網站上搜索實施 </a> </li> <li> 12. <a href="http://hk.uwenku.com/question/p-xlmqbycw-ux.html" target="_blank" title="在網站上實現「搜索」功能"> 在網站上實現「搜索」功能 </a> </li> <li> 13. <a href="http://hk.uwenku.com/question/p-cfkpkvzm-boe.html" target="_blank" title="安卓在網站上搜索信息"> 安卓在網站上搜索信息 </a> </li> <li> 14. <a href="http://hk.uwenku.com/question/p-svvnlkbm-mc.html" target="_blank" title="在網站上搜索功能?"> 在網站上搜索功能? </a> </li> <li> 15. <a href="http://hk.uwenku.com/question/p-hnngkmmd-hn.html" target="_blank" title="搜索引擎如何通過互聯網找到網站"> 搜索引擎如何通過互聯網找到網站 </a> </li> <li> 16. <a href="http://hk.uwenku.com/question/p-kkvwjyvu-md.html" target="_blank" title="通過java登錄網站"> 通過java登錄網站 </a> </li> <li> 17. <a href="http://hk.uwenku.com/question/p-kvommlxo-pb.html" target="_blank" title="Java - 在給定網站上使用搜索欄"> Java - 在給定網站上使用搜索欄 </a> </li> <li> 18. <a href="http://hk.uwenku.com/question/p-rrgcrwat-bkr.html" target="_blank" title="一個在某個網站上搜索的java程序"> 一個在某個網站上搜索的java程序 </a> </li> <li> 19. <a href="http://hk.uwenku.com/question/p-coaxwcmw-bhs.html" target="_blank" title="ASP.NET搜索網站"> ASP.NET搜索網站 </a> </li> <li> 20. <a href="http://hk.uwenku.com/question/p-zeipdgxz-beq.html" target="_blank" title="Yii網站搜索"> Yii網站搜索 </a> </li> <li> 21. <a href="http://hk.uwenku.com/question/p-esgptqax-vu.html" target="_blank" title="通過'搜索網頁'自定義Google搜索並搜索'我的網站'單選按鈕"> 通過'搜索網頁'自定義Google搜索並搜索'我的網站'單選按鈕 </a> </li> <li> 22. <a href="http://hk.uwenku.com/question/p-oldbphbt-bny.html" target="_blank" title="在瀏覽器中通過java搜索"> 在瀏覽器中通過java搜索 </a> </li> <li> 23. <a href="http://hk.uwenku.com/question/p-viqucovj-pu.html" target="_blank" title="搜索通過ID上tinysong.com"> 搜索通過ID上tinysong.com </a> </li> <li> 24. <a href="http://hk.uwenku.com/question/p-guizolch-bkm.html" target="_blank" title="過濾Google網站搜索結果"> 過濾Google網站搜索結果 </a> </li> <li> 25. <a href="http://hk.uwenku.com/question/p-rrzcxufx-bhr.html" target="_blank" title="如何在java中通過局域網搜索文件?"> 如何在java中通過局域網搜索文件? </a> </li> <li> 26. <a href="http://hk.uwenku.com/question/p-qcjewaba-dv.html" target="_blank" title="網站搜索與搜索時選項"> 網站搜索與搜索時選項 </a> </li> <li> 27. <a href="http://hk.uwenku.com/question/p-tithcrmn-xz.html" target="_blank" title="修改搜索查詢網站搜索"> 修改搜索查詢網站搜索 </a> </li> <li> 28. <a href="http://hk.uwenku.com/question/p-tebaocvd-bce.html" target="_blank" title="搜索網站上的圖像"> 搜索網站上的圖像 </a> </li> <li> 29. <a href="http://hk.uwenku.com/question/p-akwjphbu-bbs.html" target="_blank" title="搜索網站上的PHP SQL"> 搜索網站上的PHP SQL </a> </li> <li> 30. <a href="http://hk.uwenku.com/question/p-cxyyyovr-rz.html" target="_blank" title="網站搜索200k頁面網站"> 網站搜索200k頁面網站 </a> </li> </ul> </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=1644592048261"></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://hk.uwenku.com/question/p-yronkvgj-eo.html" target="_blank" title="如何在關閉模式下更改開關項目的背景顏色?"> 如何在關閉模式下更改開關項目的背景顏色? </a> </li> <li class="side_article_list_item"> 2. <a href="http://hk.uwenku.com/question/p-cjtcfchj-gg.html" target="_blank" title="嘗試將身份驗證令牌作爲系統變量存儲在python中,但在打印時返回無效"> 嘗試將身份驗證令牌作爲系統變量存儲在python中,但在打印時返回無效 </a> </li> <li class="side_article_list_item"> 3. <a href="http://hk.uwenku.com/question/p-glkfxjxf-bk.html" target="_blank" title="MySQL之前刪除觸發器雙連接和條件"> MySQL之前刪除觸發器雙連接和條件 </a> </li> <li class="side_article_list_item"> 4. <a href="http://hk.uwenku.com/question/p-kyeixhys-bu.html" target="_blank" title="的Python的Tkinter名稱錯誤"> 的Python的Tkinter名稱錯誤 </a> </li> <li class="side_article_list_item"> 5. <a href="http://hk.uwenku.com/question/p-cbyfzywq-cp.html" target="_blank" title="Haskell:函數在包裝數據上的應用"> Haskell:函數在包裝數據上的應用 </a> </li> <li class="side_article_list_item"> 6. <a href="http://hk.uwenku.com/question/p-pyfjlnqa-hb.html" target="_blank" title="有沒有辦法告訴Android Studio 3.0.1突出異常投擲者?"> 有沒有辦法告訴Android Studio 3.0.1突出異常投擲者? </a> </li> <li class="side_article_list_item"> 7. <a href="http://hk.uwenku.com/question/p-vkuqtooj-hw.html" target="_blank" title="Javascript - 如何將特定索引中的元素插入到數組的末尾?"> Javascript - 如何將特定索引中的元素插入到數組的末尾? </a> </li> <li class="side_article_list_item"> 8. <a href="http://hk.uwenku.com/question/p-brhilcyp-eb.html" target="_blank" title="問題上插入一排表"> 問題上插入一排表 </a> </li> <li class="side_article_list_item"> 9. <a href="http://hk.uwenku.com/question/p-tilffyfh-dh.html" target="_blank" title="ssis意外終止錯誤"> ssis意外終止錯誤 </a> </li> <li class="side_article_list_item"> 10. <a href="http://hk.uwenku.com/question/p-bnkusbwb-gs.html" target="_blank" title="Dockerfile - 運行apt-get install -y php5-MODULES不再工作 - 「沒有安裝應用程序」。如何解決它?"> Dockerfile - 運行apt-get install -y php5-MODULES不再工作 - 「沒有安裝應用程序」。如何解決它? </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"> 1. <a href="http://hk.uwenku.com/question/p-ebprclhw-bn.html" target="_blank" title="Google在網站上搜索"> Google在網站上搜索 </a> </li> <li class="side_article_list_item"> 2. <a href="http://hk.uwenku.com/question/p-zxglxwoh-bkd.html" target="_blank" title="允許Android SDK通過網站搜索?"> 允許Android SDK通過網站搜索? </a> </li> <li class="side_article_list_item"> 3. <a href="http://hk.uwenku.com/question/p-nyxsqztn-x.html" target="_blank" title="如何在網站搜索的任何網站上搜索"> 如何在網站搜索的任何網站上搜索 </a> </li> <li class="side_article_list_item"> 4. <a href="http://hk.uwenku.com/question/p-adqjitev-bkb.html" target="_blank" title="在Java中訪問網站搜索框"> 在Java中訪問網站搜索框 </a> </li> <li class="side_article_list_item"> 5. <a href="http://hk.uwenku.com/question/p-xugofegz-bhm.html" target="_blank" title="網站搜索網站"> 網站搜索網站 </a> </li> <li class="side_article_list_item"> 6. <a href="http://hk.uwenku.com/question/p-tiaxbssa-zp.html" target="_blank" title="搜索網站"> 搜索網站 </a> </li> <li class="side_article_list_item"> 7. <a href="http://hk.uwenku.com/question/p-zjjruoir-bkz.html" target="_blank" title="搜索網站,"> 搜索網站, </a> </li> <li class="side_article_list_item"> 8. <a href="http://hk.uwenku.com/question/p-qubbqmac-hg.html" target="_blank" title="在ASP.NET MVC網站上實現搜索"> 在ASP.NET MVC網站上實現搜索 </a> </li> <li class="side_article_list_item"> 9. <a href="http://hk.uwenku.com/question/p-avefpiwa-mw.html" target="_blank" title="在Excel上進行網站搜索"> 在Excel上進行網站搜索 </a> </li> <li class="side_article_list_item"> 10. <a href="http://hk.uwenku.com/question/p-yiiatlsn-vk.html" target="_blank" title="在網站上搜索文件夾"> 在網站上搜索文件夾 </a> </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://hk.uwenku.com/contact">聯系我們</a></li> <li>© 2020 HK.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>