1

だから私はこのPythonスクリプトをうまく使用しました:

import httplib2
from BeautifulSoup import BeautifulSoup, SoupStrainer

http = httplib2.Http()
status, response = http.request('https://conceled:conceled@traveler.pha.phila.gov:8443/servlet/traveler')

for link in BeautifulSoup(response, parseOnlyThese=SoupStrainer('a')):
    if link.has_key('href'):
        print link['href']

リンクをウェブサイトから削除します。それは他のほとんどすべてのウェブサイトで機能しますが、上記を試してみると(私が機能する必要があるものでは、多くのエラーが発生します:)

Traceback (most recent call last):
  File "C:\Users\joe\Desktop\PHA\AndroidPhones\androidphonescript2.py", line 5, in <module>
    status, response = http.request('https://conceled@traveler.pha.phila.gov:8443/servlet/traveler')
  File "C:\Python27\lib\httplib2.py", line 608, in request
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cacheFullPath)
  File "C:\Python27\lib\httplib2.py", line 449, in _request
    (response, content) = self._conn_request(conn, request_uri, method, body, headers)
  File "C:\Python27\lib\httplib2.py", line 427, in _conn_request
    conn.connect()
  File "C:\Python27\lib\httplib.py", line 1157, in connect
    self.timeout, self.source_address)
  File "C:\Python27\lib\socket.py", line 553, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
gaierror: [Errno 11003] getaddrinfo failed
4

1 に答える 1

1

サイトに無効な証明書がありますが、それが問題を引き起こしているようには見えません。どのバージョンのhttplib2を使用していますか?現在のバージョンである0.7.7をインストールしたところ、例外テキストが改善されました。

ファイル"d:\ Python27 \ lib \ site-packages \ httplib2-0.7.7-py2.7.egg \ httplib2__init __。py"、行1287、_conn_request raise ServerNotFoundError( "Unable to find the server at%s"%conn .host)ServerNotFoundError:conceled:conceled@traveler.pha.phila.govでサーバ​​ーが見つかりません

//username:password@したがって、ユーザー名とパスワードとして解析することはありません。Httplib2のドキュメントには、クレデンシャルは次の方法で提供する必要があることが示されています。

Http.add_credentials(name, password[, domain=None])

だから試してみてください:

http = httplib2.Http()
http.add_credentials(name, password)
status, response = http.request('https://traveler.pha.phila.gov:8443/servlet/traveler')

サイトにアカウントがないため、テストできません。

URLでユーザー名とパスワードをサポートできるようにする必要がある場合は、自分で解析するためのコードを作成する必要があります。正規表現(Python reモジュール)ではそれほど難しくないはずです。

于 2013-01-23T22:49:36.953 に答える