Scrapy возвращает всю ценность в одной клетке - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь очистить этот сайт с помощью скрапа, но возвращает все значения в одна ячейка, кроме каждого значения в отдельной строке.

example:
milage: 25
milage: 377
milage: 247433
milage: 464130

но я получаю такие данные

example:
milage:[u'25',
 u'377',
 u'247433',
 u'399109',
 u'464130',
 u'399631',
 u'435238',
 u'285000',
 u'287470',
 u'280000']

вот мой код

import scrapy
from ..items import ExampleItem
from scrapy.selector import HtmlXPathSelector
url = 'https://example.com'
class Example(scrapy.Spider):
    name = 'example'
    allowed_domains = ['www.example.com']
    start_urls = [url]
    def parse(self, response):
        hxs = HtmlXPathSelector(response)
        item_selector = hxs.select('//div[@class="listing_format card5 relative"]')
        for fields in item_selector:
            item = ExampleItem()
            item ['Mileage'] = fields.select('//li[strong="Mileage"]/span/text()').extract()
            yield item

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Вы не показывали свой сайт, но, возможно, вам нужен относительный XPath:

item ['Mileage'] = fields.select('.//li[strong="Mileage"]/span/text()').extract_first()
0 голосов
/ 03 сентября 2018

Звучит так, как будто вам нужно перебрать ваши milages.

for fields in item_selector:
    milages = fields.select('//li[strong="Mileage"]/span/text()').extract()
    for milage in milages:
        item = CommercialtrucktraderItem()
        item ['Mileage'] = milage  
        yield item

Также рассмотрите возможность сделать fields.select('//li[strong="Mileage"]/span/text()').extract() более конкретным?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...