怎么用python抓取网页并实现一些提交操作?

简单来说就是我想做一个刷票器。
想知道用什么库(httplib,urllib?),打开一个网页(urlopen?),获取验证码的图片(如何获取?不需要考虑识别),设置一些选项(如选中某个选项,填入姓名,身份证号等),再提交投票(post?)
如果解答及时,视详细情况加分,解决问题追加100到300分。
可加QQ:187212263
百度没把我的问题显示出来。
现在考虑用cPAMIE或win32com.client,pythoncom模拟操作IE。基本问题已解决。还差图片的获取和提交。提交源代码如下:<input type="image" name="ImgBtnSubmit" id="ImgBtnSubmit" src="images/btn_01.jpg" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ImgBtnSubmit", "", true, "", "", false, false))" style="border-width:0px;" />
请问用cPAMIE如何模拟?
最新回答
绝尘映雪

2024-04-19 01:45:00

下面这个程序是抓取网页的一个例子,MyOpener类是为了模拟浏览器客户端,并采用随机选取的方式以防网站将你认为是机器人。
MyFunc函数抓取你指定的url,并提取了其中的href链接,图片的获取类似,一般是<img src=xxx>这样的形式,其他的功能应该也不难,去网上搜下应该有些例子。

import re
from urllib import FancyURLopener
from random import choice

user_agents = [
'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11',
'Opera/9.25 (Windows NT 5.1; U; en)',
'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)',
'Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Kubuntu)',
'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20070731 Ubuntu/dapper-security Firefox/1.5.0.12',
'Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/1.2.9'
]

class MyOpener(FancyURLopener, object):
version = choice(user_agents)

def MyFunc(url):
myopener = MyOpener()
s = myopener.open(url).read()
ss=s.replace("\n"," ")
urls=re.findall(r"<a.*?href=.*?<\/a>",ss,re.I)#寻找href链接
for i in urls:
do sth.
想后不需要理由

2024-04-19 09:49:22

首先我们找到登录的元素,在输入账号处选中–>右键–>检查

然后直接查询网页源代码去找到上面的部分,根据标签来观察提交的表单参数,这里强调一下:

form标签和form标签下的input标签非常重要,form标签中的action属性代表请求的URL,input标签下的name属性代表提交参数的KEY。
代码参考如下:
import requests
url="网址" #action属性
params={
"source":"index_nav", #input标签下的name
"form_email":"xxxxxx", #input标签下的name
"form_password":"xxxxxx" #input标签下的name

}
html=requests.post(url,data=params)
print(html.text)

运行后发现已登录账号,相当于一个提交登陆的操作
中分一哥腰不好

2024-04-19 02:46:43

urllib2而已。eazy.