LXML غير قادر على استرداد صفحة الويب التي بها خطأ "فشل تحميل مورد HTTP"

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

  •  20-12-2019
  •  | 
  •  

سؤال

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

وهذا هو الخطأ الذي أتلقىه.

enter image description here

وهذا هو محتوى 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top