gpt4 book ai didi

python - 使用 scrapy 和使用下拉菜单填写表单时遇到问题

转载 作者:行者123 更新时间:2023-11-28 16:36:41 28 4
gpt4 key购买 nike

我需要用 scrapy 完成一个简单的表格,但我不知道如何填写并提交。

这是表单的 HTML:

<form action="#" id="historicalQuoteDatePicker" class="ZEITRAUM" method="get">
<fieldset>
<label for="dateStart">Startdatum:</label>
<input type="text" name="dateStart" id="dateStart" value="" class="hasDatepicker">
<img class="ui-datepicker-trigger" src="http://i.onvista.de/d.gif" alt="Klicken Sie hier um ein Datum auszuwählen" title="Klicken Sie hier um ein Datum auszuwählen">
<label for="interval">Zeitraum:</label>
<select name="interval" id="interval">
<option value="M1">1 Monat</option>
<option value="M3">3 Monate</option>
<option value="M6">6 Monate</option>
<option value="Y1" selected="selected">1 Jahr</option>
<option value="Y3">3 Jahre</option>
<option value="Y5">5 Jahre</option>
</select>
</fieldset>
<span class="button button-purple button-tiny">
<input type="submit" value="Anzeigen">
</span>
</form>

我可以很好地完成简单的搜索表单。但是,对于这个,我尝试了所有方法,但仍然无法正常工作。我尝试使用 clickdata 参数,但它需要按钮的“名称”属性,此处未给出。

这是我到目前为止尝试使用的代码:

def history_popup(self, response):
yield FormRequest.from_response(response,
formxpath="//input[@id='dateStart']",
formdata={"dateStart":"09.08.2013"},
callback=self.history_miner)

我知道这是不完整的,但我希望我在正确的轨道上。我的问题:如何让它单击按钮并从下拉菜单中选择一个选项?

非常感谢任何形式的帮助!谢谢!

最佳答案

1)FormRequest点击第一个可点击元素:

The policy is to automatically simulate a click, by default, on any form control that looks clickable, like a .

然而,可以通过 clickdata 选择要单击的元素,但它不需要 name 属性,任何属性都可以使用,包括 type 属性。在您的情况下,您可以这样做:

clickdata = { "type": "Submit" }

2) 您可以“选择”下拉菜单中的选项之一,方法与设置输入值的方式相同,即“select_name”:“option_text”。不过请注意,此方法会将下拉列表的值设置为您作为 option_text 放置的任何值,即使该选项不存在也是如此。

formdata = { "interval" : "Jahr" }

3) 最后,formxpath 值必须指向表单元素,否则会出错。 FormRequest 的工作方式是它找到一个表单,在该表单中找到与 formdata 中的名称匹配的元素,并用 formdata 中的相应数据填充这些元素。我相信您的 formxpath 应该是:

formxpath="//form[@id='historicalQuoteDatePicker']"

现在在一起:

FormRequest.from_response(
response,
formxpath="//form[@id='historicalQuoteDatePicker']",
formdata={
"dateStart":"09.08.2013",
"interval" : "Jahr" },
clickdata = { "type": "Submit" },
callback=self.history_miner
)

这在最近对我有用,祝你好运!请让我知道这对你有没有用。一个不太有用但足够的 FormRequest 文档:http://doc.scrapy.org/en/0.24/topics/request-response.html#scrapy.http.FormRequest.from_response

关于python - 使用 scrapy 和使用下拉菜单填写表单时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25219091/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com