5

スクレイピーを試して、基本的なスパイダーを動かそうとしています。これはおそらく私が見逃しているものであることはわかっていますが、考えられることはすべて試しました。

私が得るエラーは次のとおりです。

line 11, in JustASpider
    sites = hxs.select('//title/text()')
NameError: name 'hxs' is not defined

現時点では、私のコードは非常に基本的なものですが、どこが間違っているのかまだわかりません。助けてくれてありがとう!

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector

class JustASpider(BaseSpider):
    name = "google.com"
    start_urls = ["http://www.google.com/search?hl=en&q=search"]


    def parse(self, response):
        hxs = HtmlXPathSelector(response)
        sites = hxs.select('//title/text()')
        for site in sites:
            print site.extract()


SPIDER = JustASpider()
4

9 に答える 9

6

最後に SPIDER 呼び出しを削除し、for ループを削除しました。タイトル タグが 1 つしかなく (予想どおり)、ループから外れていたようです。私が働いているコードは次のとおりです。

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector

class JustASpider(BaseSpider):
    name = "google.com"
    start_urls = ["http://www.google.com/search?hl=en&q=search"]


    def parse(self, response):
        hxs = HtmlXPathSelector(response)
        titles = hxs.select('//title/text()')
        final = titles.extract()
于 2012-09-10T16:27:07.540 に答える
2

同様NameError: name 'hxs' is not definedの問題がありました。スペースとタブに関連する問題: IDE はタブの代わりにスペースを使用します。チェックアウトする必要があります。

于 2013-01-23T23:22:51.477 に答える
1

コードは正しいようです。

Scrapy の最新バージョンでは、
HtmlXPathSelector は非推奨です。セレクターを使用:

hxs = Selector(response)
sites = hxs.xpath('//title/text()')
于 2014-02-14T05:14:58.653 に答える
0

あなたは変わるべきです

from scrapy.selector import HtmlXPathSelector

の中へ

from scrapy.selector import Selector

代わりに使用hxs=Selector(response)します。

于 2015-04-26T05:38:32.857 に答える
0

これは単なるデモですが、動作します。オフコースをカスタマイズする必要があります。

#!/usr/bin/env python

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector


class DmozSpider(BaseSpider):
    name = "dmoz"
    allowed_domains = ["dmoz.org"]
    start_urls = [
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
    ]

    def parse(self, response):
        hxs = HtmlXPathSelector(response)
        sites = hxs.select('//ul/li')
        for site in sites:
            title = site.select('a/text()').extract()
            link = site.select('a/@href').extract()
            desc = site.select('text()').extract()
            print title, link, desc
于 2014-06-21T19:20:27.290 に答える
0

表示されているコードを実行していることを確認してください。

*.pycプロジェクト内のファイルを削除してみてください。

于 2012-09-05T04:47:16.153 に答える