2010-07-25 2 views
3

Я пытаюсь написать скрипт синтаксического анализа, используя python/scrapy. Как удалить [] и u 'из строк в файле результатов?Как удалить u 'из результата скрипта python?

Теперь у меня есть текст, как это:

from scrapy.spider import BaseSpider 
from scrapy.selector import HtmlXPathSelector 
from scrapy.utils.markup import remove_tags 
from googleparser.items import GoogleparserItem 
import sys 

class GoogleparserSpider(BaseSpider): 
    name = "google.com" 
    allowed_domains = ["google.com"] 
    start_urls = [ 
     "http://www.google.com/search?q=this+is+first+test&num=20&hl=uk&start=0", 
    "http://www.google.com/search?q=this+is+second+test&num=20&hl=uk&start=0" 
    ] 

    def parse(self, response): 
     print "===START=======================================================" 
     hxs = HtmlXPathSelector(response) 
     qqq = hxs.select('/html/head/title/text()').extract() 
     print qqq 
     print "---DATA--------------------------------------------------------" 

     sites = hxs.select('/html/body/div[5]/div[3]/div/div/div/ol/li/h3') 
     i = 1 
     items = [] 
     for site in sites: 
      try: 
      item = GoogleparserItem() 
      title1 = site.select('a').extract() 
      title2=str(title1) 
      title=remove_tags(title2) 
      link=site.select('a/@href').extract() 
       item['num'] = i 
      item['title'] = title 
       item['link'] = link 
       i= i+1 
       items.append(item) 
      except: 
       print 'EXCEPTION' 
     return items 
     print "===END=========================================================" 

SPIDER = GoogleparserSpider() 

и у меня есть результат, как это после запуска

python scrapy-ctl.py crawl google.com 

2010-07-25 17:44:44+0300 [-] Log opened. 
2010-07-25 17:44:44+0300 [googleparser] DEBUG: Enabled extensions: CoreStats, CloseSpider, WebService, TelnetConsole, MemoryUsage 
2010-07-25 17:44:44+0300 [googleparser] DEBUG: Enabled scheduler middlewares: DuplicatesFilterMiddleware 
2010-07-25 17:44:44+0300 [googleparser] DEBUG: Enabled downloader middlewares: HttpAuthMiddleware, DownloaderStats, UserAgentMiddleware, RedirectMiddleware, DefaultHeadersMiddleware, CookiesMiddleware, HttpCompressionMiddleware, RetryMiddleware 
2010-07-25 17:44:44+0300 [googleparser] DEBUG: Enabled spider middlewares: UrlLengthMiddleware, HttpErrorMiddleware, RefererMiddleware, OffsiteMiddleware, DepthMiddleware 
2010-07-25 17:44:44+0300 [googleparser] DEBUG: Enabled item pipelines: CsvWriterPipeline 
2010-07-25 17:44:44+0300 [-] scrapy.webservice.WebService starting on 6080 
2010-07-25 17:44:44+0300 [-] scrapy.telnet.TelnetConsole starting on 6023 
2010-07-25 17:44:44+0300 [google.com] INFO: Spider opened 
2010-07-25 17:44:45+0300 [google.com] DEBUG: Crawled (200) <GET http://www.google.com/search?q=this+is+first+test&num=20&hl=uk&start=0> (referer: None) 
===START======================================================= 
[u'this is first test - \u041f\u043e\u0448\u0443\u043a Google'] 
---DATA-------------------------------------------------------- 
2010-07-25 17:52:42+0300 [google.com] DEBUG: Scraped GoogleparserItem(num=1, link=[u'http://www.amazon.com/First-Protector-Small-Tamora-Pierce/dp/0679889175'], title=u"[u'Amazon.com: First Test (Protector of the Small) (9780679889175 ...']") in <http://www.google.com/search?q=this+is+first+test&num=100&hl=uk&start=0> 

и этот текст в файле:

1,[u'Amazon.com: First Test (Protector of the Small) (9780679889175 ...'],[u'http://www.amazon.com/First-Protector-Small-Tamora-Pierce/dp/0679889175'] 
+0

О, извините, спасибо большое.)) – Gennadich

+0

Для всех, кто хочет удалить u, я просто хотел сообщить вам, что, как правило, нет веских оснований для его удаления. Он просто отмечает строку как unicode, но на самом деле не отображается как часть строки при ее обработке. Например, вы можете напечатать любую строку в списке, и вы увидите, что «u» не отображается. –

ответ

6

Заменить print qqq с print qqq[0] , Вы получаете этот результат, потому что qqq - это список.

Такая же проблема с вашим текстовым файлом. У вас есть список с одним элементом, который вы пишете вместо элемента в списке.

+1

Просто интересно, почему я получил вниз. Насколько я могу судить, я правильно ответил. –

+0

?? Я не опустил тебя. Но я попробовал ваш вариант, и это не сработало для меня. Возможно, я сделал что-то неправильно. Во всяком случае, я очень благодарен за вашу помощь. – Gennadich

+0

Я также получил downvoted ... magic :) – nazca

1

Похоже, что результат от extract - это list. Попробуйте:

print ', '.join(qqq) 
1

и- Infront кода, чисто означает, что это строка Unicode. См. Ссылку здесь. http://docs.python.org/tutorial/introduction.html#unicode-strings. Исправление будет состоять в том, чтобы преобразовать ваш контент в строку с использованием метода str().

+1

Но в качестве примера на URL-странице отображается str (u "äöü"), я не работаю – Mark