gpt4 book ai didi

python - 使用 Scrapy 检测表单(并填写)

转载 作者:太空宇宙 更新时间:2023-11-04 10:16:13 26 4
gpt4 key购买 nike

我正在努力寻找一种通用方法来检测 HTML 中的表单然后提交它。当给定页面的页面结构提前已知时,我们当然有几种选择:

-- Selenium/Webdriver(通过填写字段并“单击”按钮)

-- 手动确定POST查询的形式,然后直接用urllib2重构:

import urllib2
import urllib
import lxml.html as LH

url = "http://apply.ovoenergycareers.co.uk/vacancies/#results"
params = urllib.urlencode([('field_36[]', 73), ('field_37[]', 76),
('field_32[]', 82)])
response = urllib2.urlopen(url, params)

或使用请求:

import requests
r = requests.post("http://apply.ovoenergycareers.co.uk/vacancies/#results", data = 'Manager')
r.text

但是,尽管大多数表单都包含一个 POST 请求、一些输入字段和一个提交按钮,但它们在幕后的实现方式却大相径庭。当要抓取的页面数量达到数百时,为每个页面定义自定义表单填写方法是不可行的。

我的理解是 Scrapy 的主要附加值是它跟踪链接的能力。我认为这还包括最终通过提交表单获得的链接。然后可以使用这种能力来构建一种通用方法来“跟踪”表单提交吗?

澄清:如果表单有多个下拉菜单,我通常会将它们保留为默认值,并且只填写搜索词输入字段。因此,找到这个字段并“填充它”最终是这里的主要挑战。

最佳答案

链接提取器无法跟踪 Scrapy 中的表单提交。还有另一种机制叫做 FormRequest这是专门为简化提交表单而设计的。

请注意,当提交涉及 JavaScript 时,FormRequest 无法处理表单。

关于python - 使用 Scrapy 检测表单(并填写),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35274729/

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