0

http://robobrowser.readthedocs.org/en/latest/readme.htmlを試しています。これは、美しいスープとリクエスト ライブラリに基づく新しい Python ライブラリです。現在、一連のページを開き、後で解析するために応答をリストに保存するために使用しています。デバッガーのリストは次のようになります。

pages =   [<Response [200]>, <Response [200]> ....]

robobrowser オブジェクトにいくつかのページをループさせて応答を保存することで、このリストを生成しました。

while pageRight:
    browser.follow_link(pageright[0])
    browser
    page = browser.response
    pages.append(page)
    pageRight= browser.select(".pageright")

この上記の部分はうまく機能しているようですが、試してみると:

ag = "myagent"
browser = RoboBrowser(user_agent=ag)

for page in pages:
    browser.open(page.content)
    for listing in browser.select('.listingInfo'): #a list
        pl = getParsedListing(listing)
        listings.append(pl)

私のdjangoインデックスファイルで、エラーが発生しています:

InvalidSchema at /index/

No connection adapters were found for..

トレースバック:

Traceback:
File "C:\envs\r1\lib\site-packages\django\core\handlers\base.py" in get_response
  114.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\envs\r1\lib\site-packages\django\views\decorators\csrf.py" in wrapped_view
  57.         return view_func(*args, **kwargs)
File "C:\envs\r1\masslist\ml1\views.py" in index
  29.         Sites = getSitesInArea(Area)
File "C:\envs\r1\masslist\ml1\views.py" in getSitesInArea
  91.         browser.open(page.content)
File "C:\envs\r1\lib\site-packages\robobrowser\browser.py" in open
  200.             verify=verify if verify is not None else self.verify,
File "C:\envs\r1\lib\site-packages\requests\sessions.py" in get
  468.         return self.request('GET', url, **kwargs)
File "C:\envs\r1\lib\site-packages\requests\sessions.py" in request
  456.         resp = self.send(prep, **send_kwargs)
File "C:\envs\r1\lib\site-packages\requests\sessions.py" in send
  553.         adapter = self.get_adapter(url=request.url)
File "C:\envs\r1\lib\site-packages\requests\sessions.py" in get_adapter
  608.         raise InvalidSchema("No connection adapters were found for '%s'" % url)    

Exception Type: InvalidSchema at /index/
Exception Value: No connection adapters were found for '

私は何を間違っていますか?

4

2 に答える 2

2

これは Robobrowser のバグです (らしい)。おそらく、その部分にあるものを探して<a href="...">Link Name</a>取っているだけ"..."です。関連する RFC (具体的には 3986) に基づいて、これは//example.com/path/to/resourceまたはhttp://example.com/path/to/resourceまたは のいずれかになります/path/to/resource。あなたが見ているのは、パス セグメントのみで何かが見つかり、/index/それを使用できると想定していることです。robobrowser がすべきこと (これはブラウザが行うことです) は、RFC 3986 のセクション 5 に基づいて完全な URI が何であるかを判断することです。

于 2014-07-26T14:35:58.233 に答える