爬取数据时常常会遇到提交表单、上传文件和登录界面,这时我们该怎么做来完善自己的爬虫
1.学会提交一个基本的表单
(1)首先观摩一下最基础的登录界面的html形式:http://pythonscraping.com/pages/files/form.html
<formmethod="post"action="processing.php">
First name:<inputtype="text"name="firstname"><br>
Last name:<inputtype="text"name="lastname"><br>
<input type="submit"value="Submit">
</form>
注意 a.First name 和last name 的方法是post,也就是向服务器上传数据。(get 则是获取)
b.实际操作界面是http://pythonscraping.com/files/processing.php
我们可以用python的requests模块来提交
提交表单后将得到页面的内容,输出如下:
(2)再例如,http://post.oreilly.com/client/o/oreilly/forms/quicksignup.cgi
<formaction="http://post.oreilly.com/client/o/oreilly/forms/quicksignup.cgi"id="example_form2"method="POST">
<input name="client_token"type="hidden"value="oreilly"/>
<input name="subscribe"type="hidden"value="optin"/>
<input name="success_url"type="hidden"value="http://oreilly.com/store/newsletter-thankyou.html"/>
<input name="error_url"type="hidden"value="http://oreilly.com/store/newsletter-signup-error.html"/>
<input name="topic_or_dod"type="hidden"value="1"/>
<input name="source"type="hidden"value="orm-home-t1-dotd"/>
<fieldset>
<input class="email_address long"maxlength="200"name="email_addr"size="25"type="text"
value="Enter your email here" />
<button alt="Join"class="skinny"name="submit"οnclick="return addClickTracking('orm','ebook','rightrail','dod'
);" value="submit">Join</button>
</fieldset>
</form>
比前面一个看着复杂,但提交模式还是一致。首先找到要提交的区域,这里主要是email_address,实际操作界面的链接是该界面。
提交表格后就能获取该页面的内容如下。
2.提交文件和图像
该例网页网址http://pythonscraping/files/form2.html
<form action="processing2.php" method="post" enctype="multipart/form-data">
Submit a jpg, png, or gif: <input type="file" name="image"><br>
<input type="submit" value="Upload File">
</form>
从html形式看出操作界面是http://pythonscraping.com/pages/processing2.php
几行代码就搞定:
最后输出上传成功的提示:
3.处理登录和 cookie
该例网页为http://pythonscraping.com/pages/cookies/login.html
查看开发者工具,可知操作界面是http://pythonscraping.com/pages/cookies/welcome.php
并且包含了主页的链接http://pythonscraping.com/pages/cookies/profile.php
用下面的代码可以实现登录
最后输出登录成功的提示: