Разобрать ненужные данные с помощью xpath - PullRequest
1 голос
/ 28 июня 2019

Я использую Scrapy, чтобы почистить сайт.После того, как я захожу на этот веб-сайт, мне нужно получить значение идентификатора каждой категории и использовать это значение для перенаправления на веб-страницу JSON, где находятся данные, которые мне нужно почистить.На изображении ниже приведен частичный снимок HTML-кода, показывающий категории вместе с их идентификатором значения, который мне нужен.Мне нужно это значение идентификатора, чтобы я мог подключить его в конце этого URL-адреса и перенаправить на этот URL-адрес."http://www.starcitygames.com/buylist/search?search-type=category&id=" И мне нужно сделать это для всех категорий. У меня есть код, который я получил далеко ниже, но сейчас использую xpath для получения этих идентификаторов, но он возвращает весь список идентификаторов сразу, а не одинза раз. Пус он дает мне другие данные, которые мне не нужны.

HTML-код

В настоящее время, что я получаю для category_id

import scrapy
import json
from scrapy.spiders import Spider
from scrapy_splash import SplashRequest
from ..items import NameItem

class LoginSpider(scrapy.Spider):
    name = "LoginSpider"
    start_urls = ["http://www.starcitygames.com/buylist/"]

    def parse(self, response):
        return scrapy.FormRequest.from_response(
        response,
        formcss='#existing_users form',
        formdata={'ex_usr_email': 'email@example.com', 'ex_usr_pass': 'passowrd'},
        callback=self.after_login
        )



    def after_login(self, response):
        item = NameItem()
        category_id = response.xpath('//*[@id="bl-category-options"]/option/@value')

1 Ответ

1 голос
/ 29 июня 2019

Довольно просто:

for catetegory_id in response.xpath('//select[@id="bl-category-options"]/option/@value').getall():
    yield scrapy.Request(
        url="http://www.starcitygames.com/buylist/search?search-type=category&id={category_id}".format(category_id=category_id),
        callback=self.parse_json_response,
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...