Web scraping Scrapy,如何更改输入表单中的值,提交然后刮取页面

Web scraping Scrapy,如何更改输入表单中的值,提交然后刮取页面,web-scraping,scrapy,scrapy-splash,Web Scraping,Scrapy,Scrapy Splash,我想在文本输入字段中输入一个值,然后提交表单,表单提交后在页面上刮取新数据 这怎么可能 这是页面上的html表单。我想将输入值从10更改为100,然后提交表单 普赖斯·弗尔 泰尔 阿本登 更新! 新的工作代码 import scrapy 进口pymongo 从scrapy_splash导入SplashRequest,SplashFormRequest 从issfst.items导入IssfstItem 等级ISSPIDER(刮毛蜘蛛): name=“issfst\u蜘蛛” 起始URL=[”h

我想在文本输入字段中输入一个值,然后提交表单,表单提交后在页面上刮取新数据 这怎么可能

这是页面上的html表单。我想将输入值从10更改为100,然后提交表单


普赖斯·弗尔
泰尔
阿本登
更新! 新的工作代码

import scrapy
进口pymongo
从scrapy_splash导入SplashRequest,SplashFormRequest
从issfst.items导入IssfstItem
等级ISSPIDER(刮毛蜘蛛):
name=“issfst\u蜘蛛”
起始URL=[”https://de.iss.fst.com/dichtungen/radialwellendichtringe/rwdr-mit-geschlossenem-kafig/ba"]
自定义设置={
#指定导出的字段和顺序
“提要导出字段”:[“imgurl”,
“Produktdatenblatt”,
“Materialdatenblatt”,]
}
def解析(自我,响应):
log(“我刚刚访问:+response.url)
URL=response.css('.details按钮>a::attr(href)').extract()
对于url中的url:
formdata={'pieces':'200'}
从_响应中生成请求(
答复,,
url=url,
formdata=formdata,
callback=self.parse_详细信息,
args={'wait':3}
)
#跟随配对链接
next_page_url=response.css('li.item>a.next::attr(href')).extract_first()
如果下一页\u url:
next\u page\u url=response.urljoin(next\u page\u url)
生成scrapy.Request(url=next\u page\u url,callback=self.parse)
def解析_详细信息(自我、响应):
item=IssfstItem()
#刮取图像url
item['imgurl']=response.css('img.fotorama\uu img::attr(src)')。extract(),
#抓取下载pdf链接
item['Produktdatenblatt']=response.css('a.action[data group=“productdatasheet”]::attr(href'))。首先提取,
item['materialdatablatt']=response.css('a.action[data group=“materialdatasheet”]::attr(href)')。首先提取(),
item['Beschreibung']=response.css('.description>p::text')。先提取_(),
收益项目

您不应该参考html源代码来了解POST请求的参数名称。您应该使用您最喜欢的浏览器的开发者工具,在保存日志的同时查看网络

因此,您正在查找url,并使用参数
pieces
form\u key
发布

当您使用错误的名称
'value'
设置表单数据时,您会出错,而网站需要名称
'pieces'

现在,作为scrapy shell会话中的演示:

scrapy shell "https://de.iss.fst.com/ba-72-nbr-902-155-x-174-x-12-0-mm-simmerringr-ba-a-mit-feder-fst-40411424"
... 
from scrapy import FormRequest

##SETTING POST'S PARAMETERS
form_key = response.css('[name="form_key"]::attr(value)').get()
#Note response.xpath('input[@name="form_key"]/@value') returns nothing
#as far as I know for hidden element like this, css selection is the basic solution
pieces = "100"
form_data = {'form_key':form_key,'pieces':pieces} #with the correct names

##POST THE REQUEST
fetch(
     FormRequest(
    'https://de.iss.fst.com/ba-72-nbr-902-155-x-174-x-12-0-mm-simmerringr-ba-a-mit-feder-fst-40411424#product-offers-anchor',
    formdata=form_data)
)#note the add of '#product-offers-anchor' to the url, instead it won't work
view(response) #to see the page your default browser

现在,您可以根据自己的代码修改上述内容。

谢谢!上周我自己就知道了:)我已经用工作代码更新了我的帖子。也许这会有帮助someone@nibor90我很惊讶您在表单中不需要
form\u键
参数。如果您不需要这样做,只需知道有时必须在表单中设置所有参数以获得正确页面的响应。它可以避免将来对您的新询问。哦,好的,那么我将实现form_键参数,谢谢!