什么是爬虫?
请求网站并提取数据的自动化程序
爬虫基本流程?
- 发起请求
通过HTTP库向目标站点发起请求
即发送Request,请求可包含额外的header等信息
等待服务器响应
扩展知识:
https://www.163.com/ 与 https://music.163.com/ 有什么区别?
1."http"是浏览器通过服务器向网站发送请求的“语言”
2."https"是"http"的安全版本,浏览器会设置一个与服务器的加密链接,网上购物时最常见
3."www"是一个子域,如"www.google.com"子域名 与 "google.com"实际域名跳转时一样的
假设www.163.com 是整座办公楼群的主楼,核心楼。而music.163.com 是办公楼群中的某个功能楼。当你没有指定具体功能楼时,就会直接进入www.163.com 的主楼。而"www"子域涵盖了所有主要网站。
- 获取响应内容
服务器正常响应,等到一个Response
内容可为HTML,Json字符串,二进制数据(图片视频)
扩展知识:
Json存在的意义?
什么是Json?
JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。
既然有了String,为什么还要Json?
Json字符串可以直接通过Json对象的xx.name来调用获取;但String需要通过各种切割和分组来获得,不方便。
Json字符串和Json对象的区别?
var person={"name":"zhangsan","sex":"男","age":"24"}//json对象
person='{"name":"zhangsan","sex":"男","age":"24"}';//json字符串
- 解析内容
如果是HTML可以用正则表达式,网页解析库
如果是Json,可以直接转为Json对象
如果是二进制数据,可以进一步保存或处理
- 保存数据
- Request包含什么?
请求方式
GET/POST
GET产生一个TCP数据包;POST产生两个TCP数据包。
- 请求URL
全球性地址,用于定位网上的资源。
全球统一资源定位符。http://mail.163.com/index.html
- 请求头
User-Agent, Host, Cookies
- 请求体
请求时额外携带的数据:表单提交时的表单数据
- Response包含什么?
响应状态
响应头
响应体
- 能抓怎样的数据?
网页文本
图片
视频
其他
- 如何解析?
直接处理
正则表达式
Json解析
BeautifulSoup