这两天找了个实习,名义是python工程师,其实就是写爬虫+整合到django。实习很奇葩,还有试用期的,现在试用期过了等后续安排,正好整理下这几天写爬虫的一些心得体会。
首先,感觉写爬虫真的是个经验活,一般的网站说白了就是不停往request里试参数。直接爬不行加headers=试试,看有提交的表单就加个data=试试。这里要区分下的是POST方法对应的是Form Data,可以通过request的data参数实现
request.post(data=data)
而GET方法对应的是Query String Parameters,一般采用拼接url的方法
base_url+urllib.urlencode(data)
至于提交表单的内容是什么,就要靠自己看html的标签或者js的函数得知,一般来说都能在html的源码里搜索到,可能是商品id,可能是页面相对路径的一部分,可能和时间相关,当然那些反爬网站提交的表单都是加密的,要想真正破解就要靠猜和试了。
然后对于一些需要模拟登录的网站,不需要验证码的话利用上面说的GET和POST表单应该就能解决,但有的网站还需要提供cookies,这时request就要包含cookies参数了。
requests.get(url, headers=header, cookies=cookie_dict)
而对于一些需要验证码登录的网站,也可以考虑先登录进去,然后复制下来登陆后的cookies,再利用其模仿登陆后的状态,但这招不一定总能成功。
说到这里突然想起之前爬学校能源网站查电费时,它一个非登录功能居然也要提供cookies才能成功响应,不知道是不是和框架有关,但总觉得好多此一举...
最后想