Выскабливание и изменение выхода - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь получить данные с этого сайта с помощью scraping:

https://dolar.wilkinsonpc.com.co/dolar-historico/dolar-historico-2018.html

Мой синтаксический анализатор сейчас выглядит так:

# -*- coding: utf-8 -*-
import scrapy
from scrapy.selector import Selector
from w3lib.html import remove_tags

class HDolarSpider(scrapy.Spider):
    name = 'historico-dolar'
    allowed_domains = ['dolar.wilkinsonpc.com.co']
    start_urls = ['https://dolar.wilkinsonpc.com.co/dolar-historico/dolar-historico-2018.html']

    def parse(self, response):
        for sel in response.xpath('//*[@id="tabla_dh"]'):
            date = sel.xpath('/html/body/div[3]/div[5]/div[1]/div/div/div[3]/div/div[5]/div[1]').extract()
            location = sel.xpath('/html/body/div[3]/div[5]/div[1]/div/div/div[3]/div/div[5]/div[2]').extract()
            print(date, location)

вывод выглядит так:

['<div class="dh_col_fecha">16 Septiembre 2018</div>'] ['<div class="dh_col_precio"><b>$ 3,026.05</b></div>']

И мне нужно вот так:

16 сентября 2018; 3026.05

Я былпытаюсь заменить на w3lib и другие безуспешно.Кто-нибудь может мне помочь?

1 Ответ

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

используйте / измените этот код:

# -*- coding: utf-8 -*-
import scrapy


class HDolarSpider(scrapy.Spider):
    name = 'historico-dolar'
    allowed_domains = ['dolar.wilkinsonpc.com.co']
    start_urls = ['https://dolar.wilkinsonpc.com.co/dolar-historico/dolar-historico-2018.html']

    def parse(self, response):
        # Select all div containing a div with a class whose name contains the phrase "dh_cal_fecha"
        for subject in response.xpath('//div[@id="tabla_dh"]/div[./div[contains(@class, "dh_col_fecha")]]'):
            yield {
                'date': subject.xpath('./div[@class="dh_col_fecha"]/text()').extract_first(),
                'location': subject.xpath('./div[@class="dh_col_precio"]//text()').extract_first(),
            }

Если вы запустите этот код с:

scsp runspider HDolarSpider.py -o Report.json

Вы создадите отчет в формате JSON со структурой, как в примере ниже:

enter image description here

Всего 262 элемента.

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