2016-07-31 18 views
0

Ich versuche, Python Scrapy Tool zum Extrahieren der Informationen von der Website bitcointalk.org über die Benutzer und die öffentlichen Schlüssel, die sie im Forum für die Spende zu posten.Attribut Fehler Antwort Objekt hat kein Attribut 'Text'

Ich fand dieses Stück Code online, machte Änderungen daran, so dass es auf meiner gewünschten Website läuft, aber ich bin in einem Fehler läuft AttributError Response-Objekt hat keinen Attributtext.

Unten ist der Code als Referenz

class BitcointalkSpider(CrawlSpider): 
name = "bitcointalk" 
allowed_domains = ["bitcointalk.org"] 

start_urls = ["https://bitcointalk.org/index.php"] 

rules = (
    Rule(SgmlLinkExtractor(deny=[ 
     'https://bitcointalk\.org/index\.php\?action=ignore', 
     'https://bitcointalk\.org/index\.php\?action=profile', 
     ], 
     allow_domains='bitcointalk.org'), callback='parse_item', follow=True), 
) 

def parse_item(self, response): 
    sel = Selector(response) 
    sites = sel.xpath('//tr[contains(@class, "td_headerandpost")]') 
    items = [] 
    for site in sites: 
     item = BitcoinItem() 
     item["membername"] = site.xpath('.//td[@class="poster_info"]/b/a/text()').extract() 
     addresses = site.xpath('.//div[contains(@class, "signature")]/text()').re(r'(1[1-9A-HJ-NP-Za-km-z]{26,33})') 
     if item["membername"] and addresses: 
      addr_list = set() 
      for addr in addresses: 
       if (bcv.check_bc(addr)): 
        addr_list.add(addr) 
      item["address"] = addr_list 
      if len(addr_list) > 0: 
       items.append(item) 
    return items 

und die Fehler, die ich empfangen habe ist:

Traceback (most recent call last): 
File "/usr/local/lib/python2.7/dist-packages/scrapy/utils/defer.py", line  102, in iter_errback 
yield next(it) 
File "/usr/local/lib/python2.7/dist-packages/scrapy/spidermiddlewares/offsite.py", line 29, in process_spider_output 
for x in result: 
File "/usr/local/lib/python2.7/dist-packages/scrapy/spidermiddlewares/referer.py", line 22, in <genexpr> 
return (_set_referer(r) for r in result or()) 
File "/usr/local/lib/python2.7/dist-packages/scrapy/spidermiddlewares/urllength.py", line 37, in <genexpr> 
return (r for r in result or() if _filter(r)) 
File "/usr/local/lib/python2.7/dist-packages/scrapy/spidermiddlewares/depth.py", line 58, in <genexpr> 
return (r for r in result or() if _filter(r)) 
File "/usr/local/lib/python2.7/dist-packages/scrapy/spiders/crawl.py", line 72, in _parse_response 
cb_res = callback(response, **cb_kwargs) or() 
File "/home/sunil/Desktop/Nikhil/Thesis/mit_bitcoin/bitcoin/spiders/bitcointalk_spider.py", line 24, in parse_item 
sel = Selector(response) 
File "/usr/local/lib/python2.7/dist-packages/scrapy/selector/unified.py", line 63, in __init__ 
text = response.text 
AttributeError: 'Response' object has no attribute 'text' 

Antwort

0

Etwas mit einem Ihrer Anfragen wahrscheinlich falsch ist, da es wie die Antwort scheint aus Mindestens eine URL, die Sie crawlen, ist nicht richtig formatiert. Entweder ist die Anfrage selbst fehlgeschlagen oder Sie stellen keine entsprechenden Anfragen.

See here für die Quelle Ihres Fehlers.

Und see here für einen Hinweis, warum Ihre Anfrage schlecht formatiert sein kann. Es sieht aus wie Selector erwartet ein HtmlResponse Objekt oder einen ähnlichen Typ.