Scrapy не распознает xpath - PullRequest
       31

Scrapy не распознает xpath

0 голосов
/ 18 марта 2019

Я пытаюсь получить данные с этой страницы https://octopart.com/electronic-parts/integrated-circuits-ics, но с помощью кнопки Specs.Я пытаюсь получить названия продуктов с этим кодом, но он не работает.

class SpecSpider(scrapy.Spider):
name='specName'

start_urls = ['https://octopart.com/electronic-parts/integrated-circuits-ics']
custom_settings = {
    'DUPEFILTER_CLASS': 'scrapy.dupefilters.BaseDupeFilter',
}

def parse(self,response):

    return FormRequest.from_response(response, formxpath="//form[@class='btn-group']", clickdata={"value":"serp-grid"}, callback = self.scrape_pages)

def scrape_pages(self, response):
    #open_in_browser(response)
    items = SpecItem() 

    for product in response.xpath("//div[class='inner-body']/div[class='serp-wrap-all']/table[class='table-valign-middle matrix-table']"):

        name = product.xpath(".//tr/td[class='matrix-col-part']/a[class='nowrap']/text()").extract()            
        items['ProductName']=''.join(name).strip()

        price = product.xpath("//tr/td['4']/div[class='small']/text()").extract()
        items['Price'] = ''.join(price).strip()



        yield items

Этот xpath response.xpath("//div[class='inner-body']/div[class='serp-wrap-all']/table[class='table-valign-middle matrix-table']") не работает.

Любые предложения

Ответы [ 2 ]

1 голос
/ 19 марта 2019

Вы используете неправильный синтаксис XPATH!

// DIV [класс = 'внутреннее тело'] / дел [класс = 'серп-наматывается все'] / таблица [класс = "настольный VALIGN среднего матрица-таблица ']

Правильный формат - добавить "@" перед "классом"

// DIV [@ класс = 'внутрипартийной тела'] / div [@ класс = 'серп-наматывается все'] /..

А в таблице выше нет таблицы 'matrix-table'.

Попробуйте использовать что-то вроде:

// DIV [@ класс = 'внутреннее тело'] / дел [@ класс = 'серп-наматывается все'] // * [содержит (@ класс 'матрица-таблица')]

0 голосов
/ 18 марта 2019

Если вы хотите использовать только название продукта верхнего уровня, используйте селектор css

.serp-card-pdp-link

и извлеките текст

Средняя цена исходит от селектора css

.avg-price-faux-btn

Вы можете применить CSS с помощью скрапа, используя .css(selector)

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