LXML غير قادر على استرداد صفحة الويب التي بها خطأ "فشل تحميل مورد HTTP"
سؤال
مرحبًا، لقد حاولت فتح الرابط أدناه في المتصفح وهو يعمل ولكن ليس في الكود.الرابط هو في الواقع مزيج من موقع إخباري ثم امتداد المقالة المستدعى من ملف آخر url.txt.لقد قمت بتجربة الكود على موقع عادي (www.google.com) وهو يعمل بشكل مثالي.
import sys
import MySQLdb
from mechanize import Browser
from bs4 import BeautifulSoup, SoupStrainer
from nltk import word_tokenize
from nltk.tokenize import *
import urllib2
import nltk, re, pprint
import mechanize #html form filling
import lxml.html
with open("url.txt","r") as f:
first_line = f.readline()
#print first_line
url = "http://channelnewsasia.com/&s" + (first_line)
t = lxml.html.parse(url)
print t.find(".//title").text
وهذا هو الخطأ الذي أتلقىه.
وهذا هو محتوى url.txt
/news/asiapacific/australia-to-send-armed/1284790.html
المحلول
وهذا بسبب &s
جزء من عنوان URL - ليس هناك حاجة إليه بالتأكيد:
url = "http://channelnewsasia.com" + first_line
أيضًا، من الأفضل أن يتم ضم أجزاء عنوان url باستخدام urljoin()
:
from urlparse import urljoin
import lxml.html
BASE_URL = "http://channelnewsasia.com"
with open("url.txt") as f:
first_line = f.readline()
url = urljoin(BASE_URL, first_line)
t = lxml.html.parse(url)
print t.find(".//title").text
مطبوعات:
Australia to send armed personnel to MH17 site - Channel NewsAsia
لا تنتمي إلى StackOverflow