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