【发布时间】:2016-08-03 17:01:25
【问题描述】:
解析页面的时候,我在拉:
'label_value': [u'\n\t\t\t\t\t\t\t\t\t\tabc123\n\t\t\t\t\t\t\t\t\t']}
我的目标是在写入 CSV 时从该 xpath 中提取相关的“abc123”。目前,由于字符串中的“\n\t”,它没有写入任何内容。环顾四周,我找到了几种方法来实现这一点,但我无法将其正确地放置在我自己的代码中并使其正确执行。
我一直在使用正则表达式和 .translate() 来删除 \n\t 的实例并清理代码以将其干净地添加到 csv 中。我在正则表达式方面没有取得太大成功,因为这些都是作为列表的拉动,所以我放弃了使用 .translate()。
下面,我添加了用于定义 xpath 和实际页面解析的代码。在启动蜘蛛和解析初始页面之间有一个步骤,但我没有发现与这个问题相关,所以在代码中省略了它。
在以下部分中,我想在哪里添加此代码?是在我在初始蜘蛛中定义 label_value 的 xpath 时,还是在我实际将其提取到我的 ResultsDict 时?
label_value = './/*[@class="lorem-ipsum"]
改为使用...
label_value = './/*[@class="lorem-ipsum"].translate(None, '\t\n ')
或者...
def parsepage(self, response)
time.sleep(2)
self.driver.get(response.url)
selectable_page = Selector(text=self.driver.page_source)
ResultsDict = scraperpageitems()
ResultsDict['label_value'] = selectable_page.xpath(label_value).extract()
改为使用...
ResultsDict['label_value'] = selectable_page.xpath(label_value).extract().translate(None, '\t\n ')
【问题讨论】:
-
您能否澄清
\n或\t是否可以出现在想要的结果字符串中。即字符串可以像这样:\n\t\t\tabc\n\t123\n\t\t\t\t,如果是,那么预期的行为是什么? -
我希望它尽可能干净,所以只有 'abc123',没有多余的文字。
-
这不能回答问题。所需文本中可以有换行符吗?例如,文本可能来自多行文本框,并且可能希望保留用户输入的格式,并且仅在用户输入之前和之后去除周围的制表符和换行符。
-
这不是你的问题,但不,这些都是单行的。