オフラインWebページで壊れた相対リンクを修正するには?
-
26-09-2019 - |
質問
私はオフラインで閲覧するためのウェブページをダウンロードするには、簡単なPythonスクリプトを書きました。問題は、相対リンクが壊れているということです。オフラインファイルので、「C:\ TEMP \ webpage.html」は「:/// C:/temp/index.aspxファイル」の代わりに "のhref =「index.aspx」しかし、それはに解決ブラウザーで開いたときがあります http://myorginalwebsite.com/index.aspx の」ます。
だから、私はそれが元のウェブサイトを指すように相対リンクのそれぞれを修正するために私のスクリプトを変更しなければならないことを想像してみてください。簡単な方法はありますか?ない場合は、誰もがこれを行うことができますいくつかのサンプルPythonコードを持っていますか?私は、任意のポインタが理解されるであろうように、Pythonの初心者です。
感謝します。
解決
あなたは自分の相対リンクは、ウェブサイトを参照したい場合は、
、ちょうど頭の中でベースタグを追加します:
<base href="http://myoriginalwebsite.com/" />
他のヒント
lxmlのにこの脳死が簡単になります!
>>> import lxml.html, urllib
>>> url = 'http://www.google.com/'
>>> e = lxml.html.parse(urllib.urlopen(url))
>>> e.xpath('//a/@href')[-4:]
['/intl/en/ads/', '/services/', '/intl/en/about.html', '/intl/en/privacy.html']
>>> e.getroot().make_links_absolute()
>>> e.xpath('//a/@href')[-4:]
['http://www.google.com/intl/en/ads/', 'http://www.google.com/services/', 'http://www.google.com/intl/en/about.html', 'http://www.google.com/intl/en/privacy.html']
そこから、ファイルとしてディスクにDOMを書き出すことができます。
あなたはhttp://
で始まったが、そうでない任意のあなたは、文字列の前、接続のため、テストにhttp://myoriginalwebsite.com
を追加したいすべてのリンクをチェックしたいので?
は簡単に十分に聞こえます。それとも、それは適切なPythonコードであるあなたが問題を抱えている?
所属していません StackOverflow