我们知道, 网络爬虫是一种按照一定的规则, 自动地抓取网站信息的程序或者脚本. 那么, 我们怎么通过网络爬虫获取所需要的网站信息呢?
不同的网站有不同的规则, 爬虫工程师根据这些规则设计不同的网络爬虫, 以此来顺利获取所需要的信息.
一, 开放 API 的网站
一个网如果开放了 API, 那么就可以直接 GET 到它的 JSON 数据. 有三种方法可以判断一个网站是否开放了 API.
1, 在站内寻找 API 入口;
2, 用搜索引擎搜索 "某网站 API";
3, 抓包, 有的网站虽然用到了 Ajax, 但是通过抓包还是能够获取 XHR 里的 JSON 数据的(可用抓包工具抓包, 也可以通过浏览器按 F12 抓包: F12-Network-F5 刷新).
二, 不开放 API 的网站
1, 如果网站是静态页面, 那么可以用 requests 库发送请求, 再通过 html 解析库 (lxml,parsel 等) 来解析响应的 text; 解析库强烈推荐 parsel, 不仅语法和 CSS 选择器类似, 而且速度也挺快, Scrapy 用的就是它.
2, 如果网站是动态页面, 可以先用 selenium 来渲染 JS, 再用 HTML 解析库来解析 driver 的 page_source.
三, 反爬虫网站
很多网站都具有反爬虫策略, 常见的有: 验证码, 登陆, 限制 IP 等.
1, 验证码. 可以利用打码平台破解(如果硬上的话用 opencv 或 keras 训练图);
2, 登陆. 利用 requests 的 post 或者 selenium 模拟用户进行模拟登陆;
3, 限制 IP. 购买亿牛云代理 IP(免费 IP 效果非常差, 不建议使用).
来源: http://www.bubuko.com/infodetail-3040711.html