Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Скрап-сканирование Несколько XPathSelector на одной странице

Автор вопроса: CommunityОтветов: 1

Я пытаюсь извлечь данные из разных "таблиц" внутри "Основной таблицы" на той же странице (тот же URL). Поля элементов имеют одинаковую XPath/одинаковую структуру во всех подтаблицах, поэтому проблема, с которой я столкнулся, заключается в том, чтобы просто добавить "несколько" XPath для разделов таблиц на этой странице.

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

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from tutorial.items import TutorialItem

class MySpider(BaseSpider):
name = "test"
allowed_domains = ["blabla.com"]
start_urls = ["http://www.blablabl..com"] // Start_url Doesnt change = Same Page


def parse(self, response):
    hxs = HtmlXPathSelector(response)
    titles = [hxs.select('//tr[@class="index class_tr group-6487"]')]

    //Here I would like to have Mltiple XPathSelectors ex:

    // titles = [hxs.select('//tr[@class="index class_tr group-6488"]')]
    // titles = [hxs.select('//tr[@class="index class_tr group-6489"]')]

    // Each for a table section within the same 'Main Table'


    items = []
    for title in titles:
        item = TutorialItem()
        item ['name'] = title.select('td[3]/span/a/text()').extract()
        item ['encryption'] = title.select('td[5]/text()').extract()
        item ['compression'] = title.select('td[8]/text()').extract()
        item ['resolution'] = title.select('td[7]/span/text()').extract()
        items.append(item)
    return items

Я был бы признателен за любой намек, если это достижимо; Если я напишу разных пауков для каждого раздела таблицы, то у меня будет 10 пауков для одного и того же URL/таблицы, и я не совсем уверен, можно ли извлекать данные в одном и том же файле "csv" по порядку.

pythonparsingxpathscrapy

Ответы

Ответ 1 · рейтинг 2 · swietyy

Попробуй это:

titles = [hxs.select('//tr[@class="index class_tr group-6487"] | //tr[@class="index class_tr group-6488"] | //tr[@class="index class_tr group-6489"]')]

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы