【问题标题】:How to input values and click button with Requests?如何输入值并单击带有请求的按钮?
【发布时间】:2016-08-03 23:59:06
【问题描述】:

通过请求模块,我最终想下载一首歌曲。如果您前往 youtube-mp3.org,则有一个输入栏和一个转换按钮。转换完成后不久,有一个下载按钮。现在我想用我的 python 脚本完成这个过程。

到目前为止我有这个:

def download_song(song_name):
    import requests

    with requests.Session() as c:
        url = r"http://www.youtube-mp3.org/"
        c.get(url)

几乎没有什么...我试图检查那里的网站上的文档。我认为我不需要任何身份验证。以前我使用 bs4 的请求来查找页面上的链接和信息,从未尝试输入。

感谢您的帮助

【问题讨论】:

  • 分析过网站了吗?你可以用你的浏览器检查dom树(当然是firefox,chrome,不知道其他浏览器)。转换按钮是表单中的 元素,您只需发出与
    的(动作,方法)匹配的请求 下载是链接( 元素),您只需发出对它指向的 url 的请求
  • 我想我可以使用下载链接,但转换按钮对我来说是新的。我无法理解@Pedru
  • 我想我到了某个地方。我坚持的一件事是表单没有名称......从我读到的内容应该提交任何东西......这是如何工作的? @pedru

标签: python web-crawler python-requests bs4


【解决方案1】:

关于“下载”链接(简单)

只需向 url 发出请求

关于表格(更复杂)

浏览器的作用

当您单击 <form> 元素内的“提交”按钮时,浏览器会收集表单内所有 <input> 元素的所有数据,在这种情况下,它会收集您放置 url 的文本输入的内容的视频。 然后浏览器使用表单的“method”属性中指定的方法向表单的“action”属性中指定的 URL 发送请求。

有问题的表格:

<form method="get" action="/" id="submit-form">
    <input id="youtube-url" value="http://www.youtube.com/watch?v=KMU0tzLwhbE" onclick="sAll(this)" autocomplete="off" type="text">
    <div id="btns">
        <input id="submit" value="Convert Video" type="submit">
    </div>
</form>

你必须做什么

您必须像浏览器一样发出请求。您现在有了要转换的视频的 URL 您必须使用表单中指定的方法(在此案例获取)。 如何发送表单编码数据见the doc

您转换视频的请求应如下所示:

page_url = 'http://www.youtube-mp3.org/'
video_url = "http://www.youtube.com/watch?v=KMU0tzLwhbE"
resp = requests.get(page_url, data={'youtube-url': video_url})

编辑:额外

在浏览器的“开发者工具”中,您可以捕获点击“转换视频”时浏览器发送的 HTTP 请求,这可能会有所帮助

【讨论】:

    猜你喜欢
    • 2016-09-06
    • 2023-03-25
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 2019-05-27
    • 2018-01-13
    • 1970-01-01
    • 2020-06-06
    相关资源
    最近更新 更多