Как получить контент страницы поиска Krugle и открыть хаб

Я хочу сделать инструмент для анализа результатов поисковой системы кода, таких как Krugle или OpenHub. Я пробовал Java и Python, чтобы получить HTML-страницу результатов поиска:

import urllib2
def write_url(url, file_name, if_show):    
    if (url is None) or (file_name is None):
        return

    req = urllib2.Request(url)
    resp = urllib2.urlopen(req)

    ret = resp.read()

    fp = open(file_name, "w")
    fp.write(ret)
    fp.close()
    if if_show:
        print ret


if __name__ == "__main__":
    url_ = "http://www.krugle.org/document/search/#query=socket"
    file_n = "D:/tmp/test.txt"
    write_url(url_, file_n, True)
    print "Done"

но я не получил содержание результата. Часть страницы, которую я получил, выглядит так:

            <div class="content_result_body">
                <div id="hit_list"></div>
                <div class="paging" style="display: none;"></div>
            </div>

Я использовал Chrome, чтобы проверить страницу результатов поиска. Это что-то вроде этого:

            <div class="content_result_body">
                <div id="hit_list">
                    <div class="hit">...</div>
                    <div class="hit">...</div>
                    <div class="hit">...</div>
                </div>
                <div class="paging">...</div>
            </div>

И в div.hit, "..." обозначает содержание результата, который искал Крюгл. Я не уверен, почему не было ничего в div.hit_list возвращаемой страницы, которую я получил своим кодом на python. Возможно, содержание результата было сгенерировано js. Но я не знаю, как получить его по кодам.

1 ответ

Решение

Чтобы иметь дело со страницами, которые динамически загружают контент, вы можете попробовать это с Selenium,

from selenium import webdriver

url = "your-url.com"
br = webdriver.Firefox()
br.get(url)

html = br.page_source

Конечно, это также откроет веб-браузер. Если это неудобно, я могу рассказать вам, как это сделать с xvfb или phantomjs

Другие вопросы по тегам