向网站发布内容

时间:2017-04-15 22:04:23

标签: python html

我想创建一个程序,在html中将内容写入文本框(例如谷歌搜索栏)。但我不知道如何在urllib中这样做。这就是它需要做的事情: 1 - 获取页面并找到该框。 2 - 写一些东西到盒子里。 3-post并给出结果。

我只想要一个如何查找框并发布它的示例,没有完整的代码。

感谢大家从现在开始。

1 个答案:

答案 0 :(得分:1)

我将介绍如何使用urllib,但下面你会找到我建议的其他库来解决你的问题。

如果您使用urllib,则必须查看表单操作属性以对POST请求进行反向工程。然后,使用此代码,您可以复制该POST:

import urllib
import urllib2

url = 'http://www.someserver.com/cgi-bin/register.cgi'
values = {'name' : 'Michael Foord',
          'location' : 'Northampton',
          'language' : 'Python' }

data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
the_page = response.read()

代码来源:This answer

正如我所提到的,对于这个问题,urllib有一个更容易的替代方案。我个人建议您使用RoboBrowserMechanicalSoup。它们更简单,因为它们会为您找出POST请求。

使用RoboBrowser的示例:

# Browse to the website
browser = RoboBrowser()
browser.open('http://website.com/')

# Find the form, write on a text box, and submit it
form = browser.get_form(action='/search')
form['q'].value = 'your text'
browser.submit_form(form)

唯一的问题是它们不能在所有网站上运行,特别是在动态网站上。因此,如果这些解决方案不起作用,一个很好的解决方法是使用Selenium。 Selenium自动化一个真正的浏览器,因此它将加载网站的所有动态部分(例如Javascript)。问题是执行自己的请求比较慢,因此我建议在尝试Selenium之前使用RoboBrowser或MechanicalSoup。