当前位置: 首页 > 面试题库 >

通过网络表单提交数据并提取结果

百里丁雨
2023-03-14
问题内容

我的python级别是新手。我从未写过网络抓取工具或搜寻器。我已经编写了python代码以连接到api并提取所需的数据。但是对于某些提取的数据,我想获得作者的性别。我找到了该网站,http://bookblog.net/gender/genie.php但缺点是没有可用的api。我想知道如何编写python将数据提交到页面中的表单并提取返回数据。如果我能对此提供一些指导,那将是一个很大的帮助。

这是dom的形式:

<form action="analysis.php" method="POST">
<textarea cols="75" rows="13" name="text"></textarea>
<div class="copyright">(NOTE: The genie works best on texts of more than 500 words.)</div>
<p>
<b>Genre:</b>
<input type="radio" value="fiction" name="genre">
fiction&nbsp;&nbsp;
<input type="radio" value="nonfiction" name="genre">
nonfiction&nbsp;&nbsp;
<input type="radio" value="blog" name="genre">
blog entry
</p>
<p>
</form>

结果页dom:

<p>
<b>The Gender Genie thinks the author of this passage is:</b>
male!
</p>

问题答案:

无需使用机械化,只需在POST请求中发送正确的表单数据即可。

另外,使用正则表达式解析HTML是一个坏主意。使用诸如lxml.html之类的HTML解析器会更好。

import requests
import lxml.html as lh


def gender_genie(text, genre):
    url = 'http://bookblog.net/gender/analysis.php'
    caption = 'The Gender Genie thinks the author of this passage is:'

    form_data = {
        'text': text,
        'genre': genre,
        'submit': 'submit',
    }

    response = requests.post(url, data=form_data)

    tree = lh.document_fromstring(response.content)

    return tree.xpath("//b[text()=$caption]", caption=caption)[0].tail.strip()


if __name__ == '__main__':
    print gender_genie('I have a beard!', 'blog')


 类似资料:
  • 问题内容: 我想知道如何通过Ajax(使用原型框架)提交表单,并在“结果” div中显示服务器响应。HTML看起来像这样: 我尝试将javascript函数(使用Ajax.Updater)附加到“ onsubmit”(在表单上)和“ onclick”(在输入上),但是在函数结束后,表单仍然是“ non-Ajax”提交的(因此整个页面被结果替换)。 问题答案: 查看和处理Prototype API的

  • 表单提交及获取$_GET/$_POST的数据 在日常的编程工作中,我们经常会使用到$_POST/$_GET来获取表单提交数据以及URL参数,而sp框架提供了arg()函数来简化了$_POST/$_GET的一些使用过程。 arg()是框架内置函数,可以有两个参数,第一个参数是将要获取的参数名称,为空则返回全部参数的数组。第二个参数是默认值,当需要获取的参数为空时,将返回该默认值。 新版已经使用arg

  • 本文向大家介绍jQuery通过ajax快速批量提交表单数据,包括了jQuery通过ajax快速批量提交表单数据的使用技巧和注意事项,需要的朋友参考一下 当表单数据项很多时,手动获取表单项的值将变得效率低下,结合jQuery提供的函数serialize(),我们可以实现快速获取数据并提交表单数据。 请看下面的表单: 我们可以通过自定义函数getFormData()来获取表单的数据,请看下面的例子:

  • 问题内容: 我想通过ajax更新表单提交而无需重新加载页面并根据它更新视图。我尝试了不同的方法,但作为Rails的新手失败了。 这是情况。 模态 在查看表单代码。 创建动作 最后我认为我想改变 花了很多时间用AJAX进行更新,但每次都失败。有什么需要帮助的吗?提前致谢。 问题答案: 您的代码不错,但是对于 ajax来说 , 您需要添加到表单中。 此外,在服务器端, 您需要在其中创建一个js.erb

  • 问题内容: 好吧,我试图通过按Enter提交表单,但不显示提交按钮。我不希望尽可能地使用JavaScript,因为我希望所有功能都可以在所有浏览器上正常工作(我知道的唯一JS方式就是使用事件)。 现在,表单如下所示: 哪个效果很好。当用户按下Enter键时,提交按钮将起作用,并且该按钮在Firefox,IE,Safari,Opera和Chrome中不显示。但是,我仍然不喜欢该解决方案,因为很难知道

  • 我正在尝试从网页上的表格中提取数据。到目前为止,我已经能够从标题标签中提取数据——但不能提取表格数据。如何使用下面显示的源来实现这一点? 资料来源: 编辑——回应马泰·斯皮利的以下评论: ^-(导致错误:android.view.ViewRootImpl$CalledFromErrorThreadException:只有创建视图层次结构的原始线程才能接触其视图)