1、什么是爬虫
首先简单的理解一下爬虫。即请求网站而且提取本身所需的数据的一个过程。至于怎么爬,将是后面进行学习的内容,暂且没必要深究。经过咱们的程序,能够代替咱们向服务器发送请求,而后进行批量、大量的数据的下载。css
2、爬虫的基本流程
- 发起请求:经过url向服务器发起request请求,请求能够包含额外的header信息。
- 获取响应内容:若是服务器正常响应,那咱们将会收到一个response,response即为咱们所请求的网页内容,或许包含HTML,Json字符串或者二进制的数据(视频、图片)等。
- 解析内容:若是是HTML代码,则可使用网页解析器进行解析,若是是Json数据,则能够转换成Json对象进行解析,若是是二进制的数据,则能够保存到文件进行进一步处理。
- 保存数据:能够保存到本地文件,也能够保存到数据库(MySQL,Redis,Mongodb等)
3、request请求包含什么
当咱们经过浏览器向服务器发送request请求时,这个request包含了一些什么信息呢?咱们能够经过chrome的开发者工具进行说明(若是不知道如何使用看本篇备注)。html
- 请求方式:最经常使用的请求方式包括get请求和post请求。post请求在开发中最多见的是经过表单进行提交,从用户角度来说,最多见的就是登陆验证。当你须要输入一些信息进行登陆的时候,此次请求即为post请求。
- url统一资源定位符:一个网址,一张图片,一个视频等均可以用url去定义。当咱们请求一个网页时,咱们能够查看network标签,第一个一般是一个document,也就是说这个document是一个未加外部图片、css、js等渲染的html代码,在这个document的下面咱们会看到一系列的jpg,js等,这是浏览器根据html代码发起的一次又一次的请求,而请求的地址,即为html文档中图片、js等的url地址
- request headers:请求头,包括此次请求的请求类型,cookie信息以及浏览器类型等。 这个请求头在咱们进行网页抓取的时候仍是有些做用的,服务器会经过解析请求头来进行信息的审核,判断此次请求是一次合法的请求。因此当咱们经过程序假装浏览器进行请求的时候,就能够设置一下请求头的信息。
- 请求体:post请求会把用户信息包装在form-data里面进行提交,所以相比于get请求,post请求的Headers标签的内容会多出Form Data这个信息包。get请求能够简单的理解为普通的搜索回车,信息将会以?间隔添加在url的后面。
4、response包含什么
- 响应状态:经过Headers中的General能够看到status code。200表示成功,301跳转,404找不到网页,502服务器错误等。
- 响应头:包括了内容的类型,cookie信息等。
- 响应体:请求的目的就是为了获得响应体,包括html代码,Json以及二进制数据等。
5、简单的请求演示
经过Python的request库进行网页请求:web

输出的结果就是还未渲染的网页代码,即请求体的内容。能够查看响应头的信息:chrome

查看状态码:数据库

还能够将请求头添加到请求信息里面:浏览器

抓取图片(百度logo):服务器

6、如何解决JavaScript渲染问题
使用Selenium webdrivercookie

输入print(driver.page_source)能够看到,此次的代码是渲染以后的代码。工具
【备注】chrome浏览器的使用

Elements标签显示了显而后的HTML代码。post

Network标签下有浏览器请求的数据,点开能够查看详细的信息,如上提到的request headers、response headers等等。

YouTube学习视频(Elnino Chen老师):https://www.youtube.com/channel/UC0gXu_5GOwzAaxkFymbwRhg