我一直在使用带有scrapy的XPath来在线提取html标签中的文本,但是当我这样做时,我会附加额外的字符。一个示例是尝试从<td>
标记中提取数字,例如“204”并获取[u'204']
。在某些情况下,它更糟糕。例如,尝试提取“1 - Mathoverflow”而不是获取[u'\r\n\t\t 1 \u2013 MathOverflow\r\n\t\t ']
。有没有办法防止这种情况,或修剪字符串,以便额外的字符不是字符串的一部分? (使用项目来存储数据)。看起来它与格式化有关,所以如何让xpath不要拿起那些东西呢?
答案 0 :(得分:2)
返回[u'204']
的代码行是什么样的?看起来返回的是包含具有所需值的unicode字符串的Python列表。什么都没有 - 只是下标。关于回车,换行和标签,正如Wai Yip Tung刚刚回答的那样,strip会将它们拿出来。
可能
my_answer = item1['Title'][0].strip()
或者如果你期待几场比赛
for ans_i in item1['Title']:
do_something_with( ans_i.strip() )
答案 1 :(得分:2)
标准XPath函数normalize-space()
具有完全想要的效果。
它删除了前导和尾随的空格,并用一个空格替换任何内部空格。
所以,你可以使用:
normalize-space(someExpression)
答案 2 :(得分:1)
使用strip()删除前导和尾随空格。
>>> u'\r\n\t\t 1 \u2013 MathOverflow\r\n\t\t '.strip()
u'1 \u2013 MathOverflow'