首先确定你要爬取的目标网站的表单提交方式,可以通过开发者工具看到。这里推荐使用chrome。
这里我用163邮箱为例
打开工具后再Network中,在Name选中想要了解的网站,右侧headers里的request method就是提交方式。status如果是200表示成功访问下面的有头信息,cookie是你登录之后产生的存储会话(session)信息的。第一次访问该网页需要提供用户名和密码,之后只需要在headers里提供cookie就可以登陆进去。
代码示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import requests
import ssl
user_agent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"
accept = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
accept_language = 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3'
upgrade = '1'
headers = {
'User-Agent' :user_agent,
'Accept' :accept,
'Accept-Language' :accept_language,
'Cookie' : '....' #这里填入你登陆后产生的cookie
}
r = requests.get( "http://mail.163.com/js6/main.jsp?sid=OAwUtGgglzEJoANLHPggrsKKAhsyheAT&df=mail163_letter#module=welcome.WelcomeModule%7C%7B%7D" ,headers = headers,verify = False )
fp = open ( "/temp/csdn.txt" , "w" ,encoding = 'utf-8' )
fp.write( str (r.content, 'utf-8' ))
fp.close()
|
这里我引入了ssl库,因为我第一次访问的网页证书过期。如果我们使用爬虫进入这样的网站时,会报错:SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)
在requests的get和post方法中,有一个参数为verify,把他设为False后会禁掉证书的要求
原文链接:http://blog.csdn.net/fengzhizi76506/article/details/60783488