Не удалось найти правильный селектор для response.xpath или response.css в Scrapy на Coinmarketcap - PullRequest
0 голосов
/ 19 октября 2019

Я бы хотел просмотреть все 20 бирж на портале coinmarketcap, чтобы просмотреть таблицы, например, https://coinmarketcap.com/exchanges/fatbtc/

Теперь я потратил несколько часов на поиск селектора, например, для Цена

В Scrapy Shell я пробовал ... и многое другое, но все не работает:

из Аддона XPath Helper :

response.xpath('/html/body/div[@id='__next']/div[@class='cmc-app-wrapper.cmc-app-wrapper--env-prod.sc-1mezg3x-0.fUoBLh']/div[@class='container.cmc-main-section']/div[@class='cmc-main-section__content']/div[@class='cmc-exchanges.sc-1tluhf0-0.wNRWa']/div[@class='cmc-details-panel-table.sc-3klef5-0.cSzKTI']/div[@class='cmc-markets-listing.lgsxp9-0.eCrwnv']/div[@class='cmc-table.sc-1yv6u5n-0.dNLqEp']/div[@class='cmc-table__table-wrapper-outer']/div/table/tbody/tr[@class='cmc-table-row.sc-1ebpa92-0.kQmhAn'][1]/td[@class='cmc-table__cell.cmc-table__cell--sortable.cmc-table__cell--right.cmc-table__cell--sort-by__price']').getall()

изChrome Inspector:

response.xpath('/td[@class='cmc-table__cell.cmc-table__cell--sortable.cmc-table__cell--right.cmc-table__cell--sort-by__price']').getall()

из Chrome Inspector копия XPath ::

response.xpath('//*[@id="__next"]/div/div[2]/div[1]/div[2]/div[2]/div/div[2]/div[3]/div/table/tbody/tr[1]/td[5]').extract()

Я использую Chrome Inspector и с сегодняшнего дня добавление называется "Xpath helper""для показа селекторов, но я все еще не совсем понимаю, что я там делаю :(. Я очень ценю любую идею, как получить доступ к этим данным и дать мне лучшее понимание в поиске этих селекторов.

Ответы [ 2 ]

1 голос
/ 21 октября 2019

Довольно просто (я использовал position(), чтобы пропустить заголовок таблицы):

for row in response.xpath('//table[@id="exchange-markets"]//tr[position() > 1]'):
    price = row.xpath('.//span[@class="price"]/text()').get()
#    price = row.xpath('.//span[@class="price"]/@data-usd').get() #if you need to be more precise
0 голосов
/ 20 октября 2019

XPATHs - это, в основном, // tagname [@ attribute = 'value'] из HTML.

Для вашего сайта вы можете зацикливать имена с //table[@id='exchange-markets']//tr/td[2]/a

и получать цены с помощью //table[@id='exchange-markets']//tr/td[5]

, где мы в основном говорим смотреть в строках таблицы в столбце 5.

...