【问题标题】:LXML unable to retrieve webpage with error "failed to load HTTP resource"LXML 无法检索网页并出现错误“无法加载 HTTP 资源”
【发布时间】:2014-07-29 02:47:28
【问题描述】:

嗨,所以我尝试在浏览器中打开下面的链接,它可以工作,但不能在代码中。该链接实际上是一个新闻站点的组合,然后是从另一个文件 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

【问题讨论】:

    标签: python lxml lxml.html


    【解决方案1】:

    这是因为 URL 的 &s 部分 - 绝对不需要:

    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
    

    【讨论】:

    • 嗨,谢谢,伙计!但是,您的代码仍然出现此错误。 tinypic.com/r/al2l5e/8我这边有什么不对吗?
    • @Jmo 只是一个简单的检查,用first_line = f.readline().strip() 替换first_line = f.readline() 有帮助吗?如果没有,您能否在调用parse() 之前打印出url 变量值,以便我可以看到正在检索和解析的实际网址?谢谢。
    • 是的,现在可以使用了,谢谢!无论如何我也可以获得文章的全部内容吗?
    • @Jmo 当然,print '\n'.join(t.xpath('.//div[@class="news_detail"]/div/p/text()')).
    • 顺便说一句,有没有一种文本分析方法可以让我从文章中分离出时间/位置?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 2017-07-15
    • 2021-05-31
    相关资源
    最近更新 更多