我正在尝试输入一个词来搜索产品与Scrapy,这是url = https://www.mercadolivre.com.br/
问题是我甚至无法通过输入表单,收到以下错误:“[scrapy.下载中间件.重试]调试:正在重试〈GET https://www.mercadolivre.com.br/jm/search?as_word=&cb1-edit=smartphone>(失败2次):502网关错误'
我的代码是:`
class MlSpider(scrapy.Spider):
name = 'ml'
allowed_domains = ['www.mercadolivre.com.br']
start_urls = ['https://www.mercadolivre.com.br/']
def parse(self, response):
return scrapy.FormRequest.from_response(
response,
formdata={'cb1-edit':"smartphone"},
callback=self.scrape_data
)
def scrape_data(self,response):
for element in response.xpath('//li[@class="ui-search-layout__item shops__layout-item"]'):
item = element.xpath('//li[@class="ui-search-layout__item shops__layout-item"]//h2/text()').get()
price = element.xpath('//div[@class="ui-search-price__second-line shops__price-second-line"]').getall()
link = element.xpath('./a/@href').get()
yield {
"item":item,
"price":price,
"link":link
}
`
我认为是传递错误的参数给formdata,但不能弄清楚是什么。我试图在formdata之前使用formxpath“/html/body/header/div/form”,但仍然是错误的网关
1条答案
按热度按时间sq1bmfud1#
不需要使用
FormRequest
。他们的搜索api只是将搜索词添加为url的最后一个路径。
例如:
输出: