LXML无法加载网页,错误为“无法加载HTTP资源”

0 投票
1 回答
675 浏览
提问于 2025-04-18 15:08

你好,我试着在浏览器里打开下面的链接,结果是可以正常工作的,但在代码里却不行。这个链接其实是一个新闻网站的地址,然后后面接的是从另一个文件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

1 个回答

1

这是因为网址中的 &s 部分是完全不需要的:

url = "http://channelnewsasia.com" + first_line

另外,网址的各个部分最好用 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

撰写回答