我们在一些没有反爬虫机制的生物网站上,可以利用Python做一些“省力”的事情,比方说ID的转换
我们以uniprot为例,进入它的转换页面 传送门 ,页面:
这里介绍下 urllib 这个Python库,该库功能非常强大,可以爬取动态网页
根据这个思路,我们看看该网站的网页结构:
url 为ID转换的网址,params是你要爬取的内容,存储为字典形式,那么字典的键值代表HTML表单(form)里面 name 的内容:
比方说 from:
字典的键值与form的name标签的内容对应
to也是一样的:
至于 "format": "tab" 是指我们把爬下来的网页转换为 tab 格式
当然,这招适用于表单提交的爬虫,如果爬取的内容过多,不妨写个函数:
参考: 传送门
form表单数据,那肯定是post提交的,
你用request对象去获取里面post参数,参数的名字就是表单输入框的name的值,两者对应起来你就能获取了,后面的处理就按自己的业务逻辑来
问题:怎样使用表单 forms解决:'webform'模块提供支持创建,校验和显示表单。这里是一个新用户注册的表单的示例:import web from web import form render = webtemplaterender('templates') # your templates vpass = formregexp(r"{3,20}$", 'must be between 3 and 20 characters') vemail = formregexp(r"@", "must be a valid email address") register_form = formForm( formTextbox("username", description="Username"), formTextbox("email", vemail, description="E-Mail"), formPassword("password", vpass, description="Password"), formPassword("password2", description="Repeat password"), formButton("submit", type="submit", description="Register"), validators = [ formValidator("Passwords did't match", lambda i: ipassword == ipassword2)] ) class register: def GET(self): # do $:frender() in the template f = register_form() return renderregister(f) def POST(self): f = register_form() if not fvalidates(): return renderregister(f) else: # do whatever is required for registration 然后注册的模板应该像是这样:$def with(form) <h1>Register</h1> <form method="POST"> $:formrender() </form>
parseRequest会用到requestgetInputStream()
这个方法requestgetInputStream()只能取一次,第二次就为空了。
所以你第二次解析的时候会有问题
你试下就知道了
parseRequest会返回一个list 你遍历下就能取到所有的form域
然后可以通过isupload来判断是什么样的然后再做处理。
以上就是关于Python爬取表单数据全部的内容,包括:Python爬取表单数据、python 处理HTML 提交form 表单问题、[Python]怎样使用表单 forms等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)