gpt4 book ai didi

python - 使用python填写网站文本框,点击按钮下载

转载 作者:太空宇宙 更新时间:2023-11-04 14:58:44 25 4
gpt4 key购买 nike

如果给定一个网站,例如http://www.barchart.com/historicaldata.php ,请问有没有办法在文本框里填好,然后点击提交按钮下载数据?

我习惯于使用 urllib 下载整个页面,但似乎可以从我的脚本中找出如何将文本提交到文本框中然后单击按钮。

最佳答案

我能想到的有两条路:

Selenium

可以使用名为Selenium Webdriver 的强大库直接模拟填充数据和单击按钮。

使用 Selenium,您可以打开一个编程式浏览器 session 并执行用户会执行的各种操作。结合ghost browser ,这可以在幕后以独立于浏览器的方式完成(如果要在服务器上运行且未安装 chrome,则很有用)。

虽然 Selenium 是一个很棒的库(非常适合测试网页),但它需要学习很多东西。如果您特别想要执行填写和单击操作,则需要它。但我认为可能有更简单的方法来完成您使用 Python 请求所做的事情。

请求

Python 的请求库是另一个用于从页面请求数据的库。您可以使用它来提交 GET 请求(浏览器在访问页面时将执行的操作)或 POST 请求(浏览器在您单击提交后将其表单数据发送到的位置)。

要了解您要将数据发送到哪些字段,请查看每个表单字段的页面 HTML,并获取“名称”属性。

如果不是因为您的内容似乎是付费墙这一事实,您可以很轻松地完成此操作。例如,假设您的表单有 3 个字段要填写,名称属性由“开始日期”、“结束日期”和“类型”组成。您可以通过以下方式完成此操作:

import requests

url = "http://www.barchart.com/historicaldata.php/"
r = requests.post(url, data = {
'item1': 'one of the form fields',
'color': 'green',
'location': 'Boston, MA',
...
}

)

with open("~~DESIRED FILE LOCATION~~", "wb") as code:
code.write(r.content)

由于付费专区,您必须先登录并保留该 session 数据。我将如何做到这一点的解释推迟到 this excellent answer

编辑:关于您应该将数据提交到何处,可能还需要注意一件事。您应提交 POST 数据的网址可能与您提供的条形图网址相同,但也可能不同。要找出答案,请查看 HTML 表单对象本身的“action”属性。 10 次中有 9 次是提交数据的地方。如果该站点使用 Javascript 做了一些奇怪的事情,您可能必须打开一个控制台并检查提交时数据发送到的确切位置。但如果需要/需要时,可以跨过这座桥。

关于python - 使用python填写网站文本框,点击按钮下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37642452/

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