2012-02-16 8 views
1

私はlxmlを使ってhtmlをスクラップしています。このコードは機能します。lxml.html.parse()の最後にあるスラッシュが重要なのはなぜですか?

lxml.html.parse("http://google.com/") 

このコードはありません。

lxml.html.parse("http://google.com") 

なぜURLの末尾にスラッシュが入りますか?ありがとうございました。

ここでは、pythonが後者のコードから私に与えているエラーログを示します。

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/home/davidfaux/epd-7.2-2-rh5-x86/lib/python2.7/site-packages/lxml/html/__init__.py", line 692, in parse 
    return etree.parse(filename_or_url, parser, base_url=base_url, **kw) 
    File "lxml.etree.pyx", line 2953, in lxml.etree.parse (src/lxml/lxml.etree.c:56204) 
    File "parser.pxi", line 1533, in lxml.etree._parseDocument (src/lxml/lxml.etree.c:82287) 
    File "parser.pxi", line 1562, in lxml.etree._parseDocumentFromURL (src/lxml/lxml.etree.c:82580) 
    File "parser.pxi", line 1462, in lxml.etree._parseDocFromFile (src/lxml/lxml.etree.c:81619) 
    File "parser.pxi", line 1002, in lxml.etree._BaseParser._parseDocFromFile (src/lxml/lxml.etree.c:78528) 
    File "parser.pxi", line 569, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:74472) 
    File "parser.pxi", line 650, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:75363) 
    File "parser.pxi", line 588, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:74665) 
IOError: Error reading file 'http://google.com': failed to load HTTP resource 
+0

'/'の有無にかかわらず、私にとってはうまく動作します。興味深いもの: – RanRag

+0

Pythonインタープリタでは、http:// google.com /は動作しますが、http:// google.comでは動作しません。 – dangerChihuahua007

答えて

1

スラッシュが付いていないため、Googleからページが送信されていないため、リダイレクトが送信されているためです。実際、スラッシュを使用してURLにリダイレクトしています。リダイレクトの本文はおそらく空です。

+0

ありがとうございますが、私がchromeで 'https:// www.google.com /'に行くと、私はchromeが私を 'https:// www.google.com'にリダイレクトすると思います。 – dangerChihuahua007

+1

そうです。しかし、それらのURLをurllibで取得すると、私が記述している動作が見えます。 Googleは多くの不思議で微妙なことをしています。 –

+1

ChromeのURLバーにURLがどのように表示されるかは、悲しいことに実際のURLとはほとんど関係ありません。 Chromeは、URLの一部を剥がして、URLの見た目を脅かさないようにします。あなたはそれに頼ることはできません。 – kindall

関連する問題