Python爬取表单数据

Python爬取表单数据,第1张

我们在一些没有反爬虫机制的生物网站上,可以利用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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/10141567.html

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

发表评论

登录后才能评论

评论列表(0条)

保存