每当我运行代码时。它给我\r\n
留空格。我使用了剥离功能,但是没有用。如何解决这个问题?这是链接:https://ibb.co/VtVV2fb \
import scrapy
from .. items import FetchingItem
class SiteFetching(scrapy.Spider):
name = 'Site'
start_urls = ['https://www.rev.com/freelancers']
transcription_page = 'https://www.rev.com/freelancers/transcription'
def parse(self, response):
items = {
'Heading': response.css('#sign-up::text').extract(),
'Earn_steps': response.css('.pb2 .lh-copy::text , .mb1::text , .mb3 .lh-copy::text').extract(),
}
yield response.follow(self.transcription_page, self.trans_faqs, meta={'items':items})
def trans_faqs(self, response):
items = response.meta['items']
names = {
'name1': 'FAQ1',
'name2': 'FAQ2',
}
finder = {
'find1': '#whatentailed p::text , #whatentailed .mr3::text',
'find2': '#requirements p::text , #requirements .mr3::text',
}
for name, find in zip(names.values(), finder.values()):
items[name] = response.css(find.strip()).extract()
yield items
答案 0 :(得分:2)
strip()
只能在字符串末尾删除\r\n
,而不能在字符串末尾删除。如果文本中有\r\n
,请使用text = text.replace(\r\n', '')
似乎您在\r\n
创建的列表中获得了extract()
,因此您必须使用列表理解来从列表中的每个元素中删除
data = response.css(find).extract()
data = [x.replace('\r\n', '').strip() for x in data]
items[name] = data
编辑:删除句子之间的空格和\r\n
,您可以split('\r\n')
创建带有句子的列表。那么您可以strip()
每个句子。然后,您可以' '.join()
将所有句子都返回一个字符串。
text = 'Sentence 1\r\n Sentence 2'
data = text.split('\r\n')
data = [x.strip() for x in data]
text = ' '.join(data)
print(text)
同一行
text = 'Sentence 1\r\n Sentence 2'
text = ' '.join(x.strip() for x in text.split('\r\n'))
print(text)
与模块re
import re
text = 'Sentence 1\r\n Sentence 2'
text = re.sub('\r\n\s+', ' ', text)
print(text)
for name, find in zip(names.values(), finder.values()):
data = response.css(find.strip()).extract()
data = [re.sub('\r\n\s+', ' ', text) for text in data]
items[name] = data