学习python的最初原因就是写爬虫,最近一直在写爬虫。感觉写爬虫的时候主要问题就是四个:页面分析,网站登录,反反爬虫,多线程并发。四个问题难度依次递增。刚开始的时候觉得页面分析挺没有头绪的,但是写过几次之后就有了套路,对页面中的自己感兴趣的内容的抓取也变得得心应手了。其次就是网站登录,这是写爬虫一定会遇到的问题,因为有些网站需要用户登录之后才可以查看,所以需要去分析网站的登录机制。难点在于,虽然用python写用户登录的步骤都是大同小异的,但是,因为每个网站的登录机制都是不一样的,登录的时候post的参数也是不一样的,分析部分有点难度。并且有些网站在post参数的时候,会在浏览器这边先用js给参数进行加密,如果不知道参数的加密方式那就麻烦了。反反爬虫和多线程并发都是当爬虫需要爬取的数据量很大的时候需要面对的问题。
之前写了知乎的网站登录,昨天开始又尝试写新浪的网站登录,打算最近把几个网站的登录都写写,多练练手。
首先是使用Chrome浏览器对发送的请求进行抓包:
这是在密码输入错误的情况下抓取的情况:
分析之后发现post的表单参数有
其中servertime,nonce,rsakv是从prelogin.php请求的返回数据中获取到的
su是经过加密之后的用户名,一次base64加密
sp是经过加密之后的密码,rsa加密方式加密过后的密码
su和sp的分析是通过网上看别人的文章看到的,自己想还没有那个能力
剩余的参数都是固定值,直接写死就好
知道参数构成之后,对生成参数,提交
登录成功之后返回的数据是类似于:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title>ÐÂÀËͨÐÐÖ¤&