使用xpath解析出不需要的数据

时间:2019-06-28 15:32:04

标签: python scrapy

我正在使用Scrapy抓取网站。访问该网站后,我需要获取每个类别的ID值,并使用该值重定向到我需要抓取数据的JSON网页。下图是HTML代码的部分快照,显示了类别以及我需要的值ID号。我需要该id值,以便可以将其插入此url的末尾并重定向到该url。 “ http://www.starcitygames.com/buylist/search?search-type=category&id=”,我需要针对所有类别执行此操作。我有下面提供的代码,但现在使用xpath获取这些ID,但它一次返回的是整个ID列表,而不是一次返回一个ID。 it,它提供了我不需要的其他数据。

HTML Code

Currently what I am receiving for 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 个答案:

答案 0 :(得分:1)

非常简单:

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,
    )