كيفية إصلاح الروابط النسبية المكسورة في صفحات الويب غير المتصلة؟

StackOverflow https://stackoverflow.com/questions/3611961

سؤال

كتبت نصًا بسيطًا في Python لتنزيل صفحة ويب للعرض غير المتصل. المشكلة هي أن الروابط النسبية مكسورة. لذا فإن الملف غير المتصل "C: temp webpage.html" يحتوي على href = "index.aspx" ولكن عند فتحه في متصفح ، فإنه يحل إلى "ملف: // c: /temp/index.aspx" بدلاً من "http://myorginalwebsite.com/index.aspx".

لذلك أتصور أنه سيتعين علي تعديل البرنامج النصي لإصلاح كل من الروابط النسبية بحيث يشير إلى الموقع الأصلي. هل توجد طريقة أسهل؟ إذا لم يكن الأمر كذلك ، فإن أي شخص لديه بعض رمز 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 مناسب لديك مشكلات مع؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top