0

次のようにスクレイピーシェルを開いています

scrapy shell "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/"

それは私に与えます:

[s] Available Scrapy objects:
[s]   hxs        <HtmlXPathSelector xpath=None data=u'<html><head><meta http-equiv="Content-Ty'>
[s]   item       {}
[s]   request    <GET http://www.dmoz.org/Computers/Programming/Languages/Python/Books/>
[s]   response   <200 http://www.dmoz.org/Computers/Programming/Languages/Python/Books/>
[s]   settings   <CrawlerSettings module=None>
[s]   spider     <BaseSpider 'default' at 0x9e1d3ec>
[s] Useful shortcuts:
[s]   shelp()           Shell help (print this help)
[s]   fetch(req_or_url) Fetch request (or URL) and update local objects
[s]   view(response)    View response in a browser


In [1]: hxs.select('//title')
Out[1]: [<HtmlXPathSelector xpath='//title' data=u'<title>Open Directory - Computers: Progr'>]

応答のタイトルは予想どおりです。

In [1]: hxs.select('//title')
Out[1]: [<HtmlXPathSelector xpath='//title' data=u'<title>Open Directory - Computers: Progr'>]

次に、単純なフェッチでこれをフォローアップします。

In [2]: fetch("http://www.google.com")

シェル出力は、オブジェクトが更新されたことを示しています。

In [2]: fetch("http://www.google.com")
2013-10-18 23:10:09+0530 [default] DEBUG: Redirecting (302) to <GET http://www.google.co.in/?gws_rd=cr&ei=eHJhUo2sOobSrQeM5ICAAg> from <GET http://www.google.com>
2013-10-18 23:10:09+0530 [default] DEBUG: Crawled (200) <GET http://www.google.co.in/?gws_rd=cr&ei=eHJhUo2sOobSrQeM5ICAAg> (referer: None)
[s] Available Scrapy objects:
[s]   hxs        <HtmlXPathSelector xpath=None data=u'<html itemscope="" itemtype="http://sche'>
[s]   item       {}
[s]   request    <GET http://www.google.com>
[s]   response   <200 http://www.google.co.in/?gws_rd=cr&ei=eHJhUo2sOobSrQeM5ICAAg>
[s]   settings   <CrawlerSettings module=None>
[s]   spider     <BaseSpider 'default' at 0x9e1d3ec>
[s] Useful shortcuts:
[s]   shelp()           Shell help (print this help)
[s]   fetch(req_or_url) Fetch request (or URL) and update local objects
[s]   view(response)    View response in a browser

しかし、そうではないことがわかりました。view(response) で dmoz ページが表示されます

タイトルを抽出すると、同じ古いタイトルが得られます。

In [3]: hxs.select('//title')
Out[3]: [<HtmlXPathSelector xpath='//title' data=u'<title>Open Directory - Computers: Progr'>]

ここで何が欠けていますか?

ありがとう!

4

1 に答える 1

1

それは私にとってはうまくいきますが、おそらくこのバグに関連しています: https://github.com/scrapy/scrapy/issues/396

最新の開発バージョンを実行してみていただけますか?

更新:この問題は ipython 0.10 で発生し、最近のバージョンに更新すると、意図したとおりに動作するはずです。また、scrapy 0.19+ (最新の開発者) で修正されています。したがって、ipythonまたはscrapyのいずれかをアップグレードできます。

于 2013-10-19T01:27:54.587 に答える