2017-08-09 6 views
0

Scraping Web Pages with Scrapy のPythonのWebクロール・スクリプト、チュートリアル以下となる問題

これは、Python 2.xのために、古いだと私はバージョン3.xを学んでいますこれまで私はGoogle経由で把握できるいくつかの問題に遭遇しました。しかし、現在、私はエラーを取得しています:

File "/usr/lib64/python3.5/site-packages/twisted/internet/defer.py", line 653, in _runCallbacks current.result = callback(current.result, *args, **kw) File "/home/skeer/PycharmProjects/scrape_craigslists/scrape_cl/scrape_cl/spiders/scrape.py", line 11, in parse xpath = scrapy.selector(response) TypeError: 'module' object is not callable

は以前グーグルで私は、セレクタの「s」は首都であるべきかのように、これは、非大文字の文字によるものであった有する他への参照を発見しました。それを試して、scrapy.Selectorモジュールがどのように見つからなかったかについてのエラーで挨拶されました。

from scrapy.spider import Spider 
import scrapy.selector 


class MySpider(Spider): 
name = "craigslist" 
allowed_domains = ["craigslist.org"] 
start_urls = ["https://helena.craigslist.org/search/sad"] 

def parse(self, response): 
    xpath = scrapy.selector(response) 
    titles = xpath.select("//p") 
    for titles in titles: 
     title = xpath("/body/section/form/div/li/p[@class]()").extract()  
     link = 
xpath("/body/section/form/div/ul/li/a[@href]").extract() 
     print (title, link) 

答えて

0

scrapy.selectorは、セレクタを含むモジュールです:

は、ここに私のコードです。しかし、応答オブジェクトが既にselector interface and an xpath methodを持っているので、これは必要ありませんので、あなたがすべき

from scrapy.selector import Selector 

を試してみてください:あなたが計画している場合

def parse(self, response): 
    xpath = response.xpath 
    titles = xpath("//p") 
    for titles in titles: 
     title = xpath("/body/section/form/div/li/p[@class]()").extract()  
     link = xpath("/body/section/form/div/ul/li/a[@href]").extract() 
     print (title, link) 

加えて、あなたは、プロキシの非常に良いリストが必要になりますスクレイプクレイグリスト。彼らは、特にスクレイピングを防ぐために、迅速にIPを禁止します。

0

は、関数定義を変更:

def parse(self, response): 
    xpath = scrapy.selector.Selector(response) 
    titles = xpath.select("//p") 
    for titles in titles: 
     title = xpath.xpath("/body/section/form/div/li/p[@class]()").extract() 
     link = xpath.xpath("/body/section/form/div/ul/li/a[@href]").extract() 
     print(title, link) 

xpath("/body/section/form/div/li/p[@class]()") - >xpath.xpath("/body/section/form/div/li/p[@class]()")

関連する問題