كيفية إصلاح الروابط النسبية المكسورة في صفحات الويب غير المتصلة؟
-
26-09-2019 - |
سؤال
كتبت نصًا بسيطًا في 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 مناسب لديك مشكلات مع؟