修改请求头信息里的User-Agent
比如说referer, content-type,请求方法(POST, GET)
构造相应的请求头信息。比如说referer,我们在提取URL的时候,要把URL所在页面的URL也存储起来,并放到request.headers。
我们需要分析页面的网络请求,从中找出和我们想要的数据相关的请求,并分析它的请求头信息、参数、cookie,然后根据这些信息构造我们的请求。通常来说都是ajax请求,也有图片请求,比如图片的lazy load,通过js在页面加载后修改图片的src属性。一般都会有其他的自定义属性存在,比如说"_src"。总之,可以找到一些ID或者链接。注意观察相关dom节点树上的特殊属性。
一般是在前端通过一定的计算,构造出一个哈希值。需要分析前端的代码,找出具体计算的代码逻辑,并用python再实现。如果前端的代码经过混淆,并且代码量十分巨大,可以使用selenium或者splash等引擎去请求。但是,如果爬取的数据需求量比较大,我们还是要通过直接调用对方接口的形式去获取数据。
比如携程酒店房型列表接口,用它自己的js解密,或者分析它的js前端逻辑,用python代码实现出来。
比如大众点评,通过CSS样式去代替某个字符。我们需要同时爬取CSS文件,并且分析CSS文件内的样式,最后定位到svg文件,并分析提取svg内的内容,完成替换。
比如猫眼电影。每次随机返回一个字体文件,并且字符也是随机的。需要每次下载对应的字体文件,并解析字体文件和字符之间的对应关系。
登录、session限制,比如新片场,拿到登录以后的cookie,然后set到头信息里面,这样请求的时候就相当于登录了。
需要准备大量的IP代理,获得IP代理的方式有:
控制爬取频率,保持不被封的情况下的最合适的并发数量。