美文网首页
Python提交表单

Python提交表单

作者: 其实我很菜啊 | 来源:发表于2018-06-17 12:22 被阅读0次

今天用一个有道翻译的例子来讲解如何用 python 来提交表单数据。

一、获取请求信息

我使用的是谷歌浏览器,打开调式模式再输入中文后提交请求


image.png

点击 Network -> XHR -> POST提交方法 ->Headers
保存以下信息:

  1. 请求 Request URL
  2. User-Agent
  3. FormData 数据

其中 FormData 就是我们提交的表单内容

二、python 模拟提交表单

  1. 将 formdata 构造成字典
    data['i'] = content
    data['from'] = 'AUTO'
    data['to'] = 'AUTO'
    data['smartresult'] = ['dict']
    data['client'] = ['fanyideskweb']
    data['salt'] = '1529068716890'
    data['sign'] = 'e352f557c7770386ab1a2ce3667fa09b'
    data['doctype'] = 'json'
    data['version'] = '2.1'
    data['keyfrom'] = 'fanyi.web'
    data['action'] = 'FY_BY_CLICKBUTTION'
    data['typoResult'] = 'false'
  1. 添加请求头信息
    head['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'

这是为了防止服务器识别出是代码模拟访问进行拦截

  1. 发送请求并获取响应信息
    data = urllib.parse.urlencode(data).encode("UTF-8")#格式化表单内容
    req = urllib.request.Request(url,data,head)
    response = urllib.request.urlopen(req)
    html = response.read().decode("utf-8")
    taget = json.loads(html)
    res = taget['translateResult'][0][0]['tgt']

使用 urllib.request.Request(url,data,head) 为请求添加信息

  • 测试结果


    image.png

三、隐藏

隐藏是为了服务器识别出你是正常使用浏览器进行预览还是使用代码进行爬虫,通常服务器会检测 User-Agent 的信息,所以这就是要加上 headers 的原因。

    head['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'

服务器会检测你访问的次数,如果你在短时间内进行 N 多次访问,那么服务器可能会为了防止自己遭受攻击而封你的 IP
可以通过加入定时器进行解决。

while True:
#Code
time.sleep(3)

还有一种就是使用 ip 代理进行访问

ipList = {'138.255.111.240:8080','178.209.108.238:8080','115.223.196.1:9000'}

proxy_support = urllib.request.ProxyHandler({'http':random.choice(ipList)})

opener = urllib.request.build_opener(proxy_support)
opener.addheaders = [('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36')]

urllib.request.install_opener(opener)

response = urllib.request.urlopen(url)

随机使用一个 ip 进行访问,在使用时为了提高效率可以开启线程,进行并发访问。

相关文章

  • Http的post请求中表单、json提交的请求头、请求体区别

    1、真正的表单提交,http默认的也是表单 python模拟表单提交 2、json提交 python模拟json提交

  • Python提交表单

    今天用一个有道翻译的例子来讲解如何用 python 来提交表单数据。 一、获取请求信息 我使用的是谷歌浏览器,打开...

  • python通过post发送表单请求

    #!/usr/bin/python #-*-coding:utf-8-*- #进行表单提交小项2008-10-09...

  • 12、Struts2表单重复提交

    什么是表单重复提交表单的重复提交:若刷新表单页面, 再提交表单不算重复提交.在不刷新表单页面的前提下:多次点击提交...

  • Javascript-表单脚本

    一、表单的基础知识 1、表单提交 普通提交 以编程方式调用submit()方法提交表单 解决表单重复提交的办法:1...

  • FormData

    表单,FormData 对象 表单概述 表单用来收集用户提交的数据,发送到服务器 表单提交 1. 提交 表单里...

  • JAVAWeb(第三周)

    表单提交方式 *使用submit提交 .... *使用button提交表单 -代码 //实现提交方法 functi...

  • Struts2学习笔记 | 防止表单重复提交及自定义拦截器

    表单重复提交的概述 若刷新表单页面,再提交表单不算重复提交。 若是重定向,已经提交成功后再刷新不算重复提交。 以下...

  • 表单

    表单基础 提交表单 Tips: 解决重复提交表单的问题的两个方法1)在第一次提交表单后就禁用提交按钮2)利用ons...

  • JavaWeb (day5)

    1.表单提交方式 使用 submit 提交 使用 button 提交表单 使用超链接提交 onclick :鼠标点...

网友评论

      本文标题:Python提交表单

      本文链接:https://www.haomeiwen.com/subject/pgcweftx.html