2

http://www.gilacountyaz.gov/government/assessor/index.phpのような一部の Web サイトには、絶対パスであるはずの内部リンクがたくさんありますが、先頭のスラッシュはありません。結果でそれらを解析するとurlparse.urljoin、次のようになります。

>>> import urlparse
>>> a = "http://www.gilacountyaz.gov/government/assessor/index.php"
>>> b = "government/assessor/address_change.php"
>>> urlparse.urljoin(a, b)
'http://www.gilacountyaz.gov/government/assessor/government/assessor/address_change.php'

これにより、Web クローラーは既にページにアクセスしたことを認識できず、無限ループが発生する可能性があります。Firefox と Chrome は、問題を特定して正しく解決することができます。

http://www.gilacountyaz.gov/government/assessor/address_change.php

Pythonで同じことを行う方法はありますか? 真の相対パスを扱っている可能性があるため、常に先頭のスラッシュが機能しないと仮定することに注意してください。

4

2 に答える 2

7

リンク先のページには次の内容が含まれています。

<head>
  <base href="http://www.gilacountyaz.gov/index.php"/>
</head>

その URL を最初の引数として使用するとurljoin、正しい結果が得られます。このタグは、ブラウザがこれらのリンクを正しく解釈できるようにするものです。

于 2014-11-05T19:45:37.017 に答える
3

Firefox と Chrome は両方とも<base>、ページの上部にあるタグを読み取っています。

<base href="http://www.gilacountyaz.gov/index.php"/>

コードはそれをルートとして使用する必要があります。

>>> import urlparse
>>> a = "http://www.gilacountyaz.gov/index.php"
>>> b = "government/assessor/address_change.php"
>>> urlparse.urljoin(a, b)
'http://www.gilacountyaz.gov/government/assessor/address_change.php'
于 2014-11-05T19:47:35.223 に答える