如何用python脚本提交JS的表单

如何用python脚本提交JS的表单,第1张

如果是要提交表单内容给 服务器的 python 处理,那么只需要在表单 <form>里面的 action 填写服务端的处理路由就可以了。或者用 <a>指向服务器路由get querystring。前端方面不需要python啊。

前端的提交交互动作,都是由 javascript 处理就可以了

远程登录ssh之后,那个web页面可以通过url访问还是服务器上可以直接读取的文件?

如果是前者,就等于python爬虫了,使用 uillib urllib2访问 web页面的 url 得到响应,然后解析,再使用刚才两个标准模块里面的.大概事例代码:

import urllib, urllib2

res = urllib2.urlopen("http://your.web.com")

html = res.read()

# 解析 html ,读取 你要提交的内容

# 提交到新的连接

# get

params = urllib.urlencode({'programe': 'python', 'age': 12})

f = urllib.urlopen("http://your.web.com?%s" % params)

# post

params = urllib.urlencode({'programe': 'python', 'age': 12})

f = urllib.urlopen("http://your.web.com", params)

直接读取服务器上的web文件内容解析提交的内容,后面的过程也是一样。

另外,python 有个 requests 的库,封装得更好,使用方便

你想自己实现 wsgi 还是使用 wigiref 模块?你需要了解wsgi 基础,所有表单数据 可以通过 wsgi 的入口函数中的参数 envrion['wsgi.input'] 获取到

wsgi参考资料:

https://www.python.org/dev/peps/pep-3333/

https://pep-3333-wsgi.readthedocs.io/en/latest/

以下实例是一个完整的代码,实现了从博客获取内容发布至百度,分别实践抓取博客内容、模拟登录、表单提交这几步;

#注意,以下程序是一个完全程序,如果只需要实现模拟登录,提交表单,删除抓取部分即可,相关的代码已经清楚标注,可以根据自己实际情况修改。

代码如下:

# -*- coding: utf-8 -*-

import re

import urllib

import urllib2

import cookielib

#第一步,获取博客标题和正文 ,“IP”可以改为实际地址;

url = "IP"

sock = urllib.urlopen(url)

html = sock.read()

sock.close()

content = re.findall('(?<=blogstory">).*(?=<p class="right artical)', html, re.S)

content = re.findall('<script.*>.*</script>(.*)', content[0], re.S)

title = re.findall('(?<=<title>)(.*)-.* - CSDN.*(?=</title>)', html, re.S)

#根据文章获取内容新建表单值

blog = {'spBlogTitle': title[0].decode('utf-8').encode('gbk'), #文章标题

'spBlogText': content[0].decode('utf-8').encode('gbk'),#文章内容

'ct': "1",

'cm': "1"}

del content

del title

#第二步,模拟登录百度;

cj = cookielib.CookieJar()

#登陆百度的用户名和密码

post_data = urllib.urlencode({'username': '[username]', 'password': '[password]', 'pwd': '1'})

#登录地址路径

path = 'https://passport.baidu.com/?login'

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

opener.addheaders = [('User-agent', 'Opera/9.23')]

urllib2.install_opener(opener)

req = urllib2.Request(path, post_data)

conn = urllib2.urlopen(req)

#获取百度登陆认证令牌

bd = urllib2.urlopen(urllib2.Request('http://hi.baidu.com/[username]/creat/blog')).read()

bd = re.findall('(?<=bdstoken\" value=\").*(?=ct)', bd, re.S)

blog['bdstoken'] = bd[0][:32]

#设置分类名

blog['spBlogCatName'] = 'php'

#第四步,比较表单,提交表单;req2 = urllib2.Request('http://hi.baidu.com/[username]/commit', urllib.urlencode(blog))

#最后,查看表单提交后返回内容,检验;

print urllib2.urlopen(req2).read()

#注意:将[username]/[password]替换为自己真实用户名和密码


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9862476.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存