1
我從一個頁面提取數據,我必須去更深,但我仍然堅持在第一頁。這是我的代碼:scrapy,我試圖刪除提取到csv文件的空行
from scrapy.contrib.spiders import CrawlSpider
from scrapy.selector import HtmlXPathSelector
from street.items import HstreetItem
class MySpider(CrawlSpider):
name = "go-h"
allowed_domains = ["http://somedomain.com"]
start_urls = ["http://somedomain.com"]
def parse(self,response):
#response = response.replace(body=response.body.replace('\n', '')) # doesn't work
hxs = HtmlXPathSelector(response)
details = hxs.select('//tr')
items = []
#n = 0
for detail in details:
item = HondastreetItem()
item['url'] = "".join(detail.select('td[@class="Model_LineModel_odd"]/a/@href | td[@class="Model_LineModel_even"]/a/@href').extract()).strip()
item['model'] = "".join(detail.select('td[@class="Model_LineModel_odd"]/a/text() | td[@class="Model_LineModel_even"]/a/text()').extract())
item['year'] = "".join(detail.select('td[@class="Model_LineYear_odd"]/text() | td[@class="Model_LineYear_even"]/text()').extract())
items.append(item)
return items
的代碼工作正常,並通過我的pipleine中提取數據到一個CSV文件,它應該像:
cell 1 | cell2 | cell3
url | model | year
.
.
.
的問題是,我有很多的空行我csv文件。在開始處,恰好有17行,然後是我的csv文件的填充行之間的空行。我認爲抓取表格前面的幾張表格和抓取的表格中我不需要的一些行(如類別名稱)正在造成這種情況。 我堅持這過去的24小時:(我一直在努力,我通過類似的問題發現,但沒有爲我工作的所有解決方案。
感謝您的幫助!
您沒有顯示您的csv書寫代碼。你有沒有試過[調試你的代碼](https://pythonconquerstheuniverse.wordpress.com/2009/09/10/debugging-in-python/)?你應該能夠確定地知道空行來自哪裏。另外,如果我們看不到html表格結構,我們無法確定問題是否存在。您至少應該發佈示例html – goncalopp
如果您可以提供實際的URL,那麼我們將能夠更徹底地測試您的代碼。 :) – Talvalin
Csv編寫代碼並不重要,我使用piplines.py。它可能是一個地方,你可以防止空行被寫入,但然後我只是想清理所有內容,然後寫入csv。我在我的問題中提到可能
回答
我很新的Python和落在這裏試圖瞭解scrapy。
從我的理解,你必須追加空行。所以,你可以嘗試檢查「項目」不是追加語句之前空的,例如,
請忽略,如果我誤解了這個問題。
來源
2014-03-26 13:24:25 haraprasadj
好的建議。你可以將條件簡化爲僅僅是'item ['url']或者item ['model']或者item ['year']'(空字符串在Python中計算爲false) – goncalopp
@goncalopp謝謝,瞭解了一件事情: ) – haraprasadj
很高興幫助:)你也可以嘗試'如果有的話(地圖(item.get,('url','model','year')))',或者甚至簡單地'如果有的話(item.values() )',如果沒有其他項目。有太多可能的方法來做到這一點 – goncalopp
相關問題