Данные не очищаются правильно - PullRequest
1 голос
/ 02 июля 2019

Попытка очистить следующую веб-страницу с помощью Scrapy, https://www2.trollandtoad.com/buylist/?_ga=2.123753418.115346513.1562026676-1813285172.1559913561#!/M/10591,, и часть данных была очищена правильно, но я не могу правильно получить имя карты, поскольку ее селектор совпадает с именем набора, поэтому япросто получите название набора для имени карты.

 def parse(self, response):
        #  Initialize item to function GameItem located in items.py, will be called multiple times
        item = GameItem()
        # Extract card category from URL using html code from website that identifies the category.  Will be outputted before rest of data
        for data in response.css("tr.ng-scope"):
            item["Set"] =data.css("a.ng-binding.ng-scope::text").get()
            if item["Set"] == None:
                item["Set"] = data.css("span.ng-binding.ng-scope::text").get()
            item["Card_Name"] = data.css("a.ng-binding.ng-scope::text").get()
            # Call item again in order to extract the condition, stock, and price using the corresponding html code from the website
            item["Condition"] = data.css("td\.5557170.buylist_condition::text").get()
            item["Quantity"] = data.css("span.ng-binding::text").get()
            item["Price"] = data.css("span.ng-binding::text").get()

ОБНОВЛЕНИЕ # 1

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

item["Card_Name"] = data.xpath("/html/body/div[2]/div[2]/div[1]/table[1]/tbody/tr[1]/td[2]/a/text()").get()

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

Следующий код - это то, что, наконец, заставило его работать правильно, мне пришлось урезать свой xpath и сделать его относительным, а не абсолютным.

item["Card_Name"]  = data.xpath(".//td[2]/a/text()").get()
0 голосов
/ 03 июля 2019
card_names = response.xpath("//div/table/tbody/tr/td[contains(@class,'buylist_productname item')]/a/text()").getall()

Вернет список различных названий карт в соответствии с их порядком на странице.

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