Web Scraping with Python 学习笔记9

Chapter 9: Crawling Through Forms and Logins

Python Requests Library

        主要介绍Python Requests Library,它能处理更加复杂的HTTP requests, cookies, headers等等。

Submitting a Basic Form

        只需四行代码就可以完成一个简单的表单提交,下面是最为简单的表单:

<form method="post" action="processing.php">
First name: <input type="text" name="firstname"><br> Last name:     <input type="text" name="lastname"><br> <input type="submit" value="Submit">
</form>

页面地址:http:// pythonscraping.com/pages/files/form.html这里稍微涉及到一些简单的前端编程。

import requests

params = {'firstname': 'Luo', 'lastname': 'Xun'}
r = requests.post("http://pythonscraping.com/files
processing.php", data=params) 
print(r.text)

执行结果:Hello there,Luo Xun!

Radio Buttons,Checkboxes,and Other Inputs

        显然,正常的网页不是几个text域和几个submit提交按钮构成,它还包括单选、多选按钮等等,在HTLML5中,加入了日期dates属性和email等。不管属性域多么复杂,我们只需注意属性名和对应的value值就行,属性名通过检查源码很容易确定,属性值有时候需要仔细辨认,最简单的方法是看URL,比如:http://domainname.com?thing1=foo&thing2=bar 我们立刻知道name和value:{‘thing1’:’foo’,’thing2’:’bar’}两个。另外一种方法是通过浏览器的开发工具查看,Google的chrome浏览器点击View → Developer → Developer Tools.

Submitting Files and Images

        同上一章节,略。

Handling Logins and Cookies

        大部分网站都会存储你的个人登陆信息在你的浏览器的cookies里,服务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。Cookies最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookies的功用。另一个重要应用场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信息。虽然方便了web开发人员,这对网络爬虫可不是什么好事,你可以一直提交登陆认证,但是如果你不追踪cookies返回的信息,很可能下次你访问的页面再也没有你的登陆信息了。保持追踪cookies返回信息的代码很简单:

import requests

params = {'username': 'Ryan', 'password': 'password'}
r = requests.post("http://pythonscraping.com/pages/cookies/ welcome.php", params) print("Cookie is set to:")
print(r.cookies.get_dict())
print("-----------")
print("Going to profile page...")
r = requests.get("http://pythonscraping.com/pages/cookies/  profile.php",cookies=r.cookies)

print(r.text)

        但是会遇到这种情况,某网站会不断的修改cookies而不会有任何反馈信息给你,我们的解决办法是使用session:

import requests
session = requests.Session()
params = {'username': 'username', 'password': 'password'}
s = session.post("http://pythonscraping.com/pages/cookies/  welcome.php", params) print("Cookie is set to:")
print(s.cookies.get_dict())
print("-----------")
print("Going to profile page...")
s = session.get("http://pythonscraping.com/pages/cookies/   profile.php") 

print(s.text)

这里建议使用session而不是直接requests。

HTTP Basic Access Authentication

        在cookies出现之前,最常用的处理logins的方式是HTTP basic access authentication 在现在依然可以看到它的身影,尤其在一些安全性很高的网站。登陆认证时传入的用户名username可以是任何名字,但密码password必须是”password”。

import requests
from requests.auth import AuthBase 
from requests.auth import HTTPBasicAuth

auth = HTTPBasicAuth('ryan', 'password')
r = requests.post(url="http://pythonscraping.com/pages/auth/    login.php", auth=auth)

print(r.text)
Other Form Problems

        现在的网站还有一些其他的安全特性,主要是防止恶意程序自己创建账户登录网站进行一些非法操作,后续章节将会讲到。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值