2015-04-02 34 views
1

嗨,我有以下Scrapy代碼,我想保存一個文件中提供的URL的所有標題,但它只保存最後一個標題(「url3」)。Scrapy將URL標題保存在文本文件中

from scrapy.spider import BaseSpider 
    from scrapy.selector import Selector 
    from scrapy.http import HtmlResponse 
    from kirt.items import KirtItem 

    class KirtSpider(BaseSpider): 

     name = "spider-name" 

     allowed_domains = ["url1","url2","url3"] 

     start_urls = ["url1","url2","url3"] 


    def parse(self,response): 

     sel = Selector(response) 
     title = str(sel.xpath('//title/text()').extract()) 

     with open('alltitles.txt','w') as f: 
      f.seek(0) 
      f.write(title) 
+0

檢查您的縮進 - 我猜你想'帶....子句縮進停止,是嗎? – bgporter 2015-04-02 19:28:50

+0

抱歉沒有找到你。哦,你了。讓我檢查 – arshpreet 2015-04-02 19:58:11

+0

@bgporter我只輸錯了這裏。我的源文件很好,現在也在這裏糾正。任何想法如何我可以保存所有標題,而不是隻有一個...我覺得它是每次保存標題並更新它。 – arshpreet 2015-04-02 20:06:10

回答

4

的問題是在這裏,在兩種不同的方式:

with open('alltitles.txt','w') as f: 
     f.seek(0) 
     f.write(title) 

打開文件,模式'w'不僅打開該文件,但如果已經有一個同名的文件,它首先刪除它。您應該改用'a'模式打開文件,該模式會將新行添加到現有文件(如果存在)。

儘管如此,您還可以調用f.seek(0),它將文件寫入指針回退到文件的開頭,並使其覆蓋當前文件內容。這段代碼想要更像:

with open('alltitles.txt','a') as f: 
     # write out the title and add a newline. 
     f.write(title + "\n") 
+0

賓果感謝,有一件事我也忘了提,首先我們也把標題轉換成字符串。 – arshpreet 2015-04-02 21:22:29

相關問題