前端的提交交互动作,都是由 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 的库,封装得更好,使用方便
使用 Python 实现复制表单信息并在另一个网店上传商品的过程可以使用第三方库如 requests 和 beautifulsoup4。
首先,需要使用 requests 库发送 GET 请求获取第一家网店的商品添加页面的 HTML 代码。
使用 beautifulsoup4 库解析 HTML 代码,找到 form 表单元素并获取其中的 name 和 value 属性。
使用获取的 name 和 value 属性创建一个字典,用来保存表单中的数据。
使用 requests 库发送 POST 请求,将字典数据作为请求体发送到另一家网店的商品添加页面。
在另一家网店上检查是否成功添加商品。
具体实现过程需要根据具体网站的结构来调整,这是一个大致的流程。
以下实例是一个完整的代码,实现了从博客获取内容发布至百度,分别实践抓取博客内容、模拟登录、表单提交这几步;#注意,以下程序是一个完全程序,如果只需要实现模拟登录,提交表单,删除抓取部分即可,相关的代码已经清楚标注,可以根据自己实际情况修改。
代码如下:
# -*- 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]替换为自己真实用户名和密码