Ich bin eine Spinne, die Daten in DynamoDB speichert. Ich habe StackOverflow nach einer Antwort gesucht, konnte sie aber nicht finden. Es speichert stamp
und title
in DynamoDB mit allen anderen Zeichen wie/u und Klammern. url
werden ordnungsgemäß gespeichert, ohne zusätzliche Zeichen. Wie kann ich es ohne sie sparen?Scrapy liefert Artikel an die DB mit/u
Meine Spinne:
def parse(self, response):
for item in response.xpath("//li[contains(@class, 'river-block')]"):
url = item.xpath(".//h2[@class='post-title']/a/@href").extract()[0]
stamp = item.xpath(".//time/@datetime").extract()
yield scrapy.Request(url, callback=self.get_details, meta={'stamp': stamp})
def get_details(self, response):
article = ArticleItem()
article['title'] = response.xpath("//h1/text()").extract()
article['url'] = format(shortener.short(response.url))
article['stamp'] = response.meta['stamp']
yield article
Meine Pipelines Datei:
class DynamoDBStorePipeline(object):
def process_item(self, item, spider):
dynamodb = boto3.resource('dynamodb',region_name="us-west-2")
table = dynamodb.Table('TechCrunch')
table.put_item(
Item={
'url': str(item['url']),
'title': str(item['title']),
'stamp': str(item['stamp']),
}
)
return item
Beispielausgabe:
url: ein Link (es ist in Ordnung)
Stempel: [u'2017-05-17 08:06:47 ']
titel: [utitle']
bitte Beispielwerte von 'title' bieten,' sample' und 'url' und erwarteten Ausgang, auch die URL-Website Sie versuchen zu verschrotten. – JkShaw
Verwenden Sie 'extract_first()' anstelle von 'extract()', falls dies Ihr Problem nicht löst, geben Sie update post mit dem Link, den Sie scrapen. – JkShaw
@JkShaw arbeitete wie ein Charme. Danke mein Herr. Kannst du es bitte als Antwort schreiben, damit ich deine Antwort annehmen und annehmen kann? – yurashark