爬虫的操作流程无非就是:发起请求 -- 获取响应内容 -- 解析内容 -- 保存数据
通过HTTP库向目标站点发起请求,即发送一个Request,请求里面可以包含自己指定的headers、data、盐值等信息,然后等待服务器响应。
有很多网站为了防止爬虫程序爬网站造成网站瘫痪,所以我们的程序在模拟浏览器访问这些网站时,需要携带一些headers头部信息才能访问,最常见的有User-Agent、referer、cookie参数。
Headers头部信息可在浏览器中获取,这个过程其实就相当于程序作为一个浏览器,向服务器端发送了一次请求。
浏览器中右键,选择检查(或直接点击F12),选择network分析器,在里面便可找到相关信息。
如果服务器能正常响应,我们设置一变量Response用以保存,Response的内容便是所要获取的内容,类型可能有HTML、Json字符串,二进制数据(图片,视频等)等类型。
Response = requests.get(url,headers=headers)
(其中url作为变量,存储所要爬取的网站地址)。
这个过程就是构造一个向服务器请求资源的对象,url是通过http协议存取资源的一个路径,它就像我们电脑里面的一个文件的路径一样。
得到的内容可能是HTML,可以使用正则表达式,网页解析库进行解析。也可能是Json,可以直接转为Json对象解析。可能是二进制数据,可以做保存或者进一步处理。
正则表达式通常被用来匹配、检索、替换和分割那些符合某个模式(规则)的文本。此外,html解析的方法还包括xpath、BS4等方法。
这一步相当于浏览器把服务器端的文件获取到本地,再进行解释并且展现出来。
保存的方式可以是把数据存为文本,也可以把数据保存到数据库,或者保存为特定的jpg,mp4 等格式的文件。
使用with open("文件路径", "文件代开方式", 编码格式(一般设置为encoding='utf-8'), newline=None) as file读写文件, 其中newline是换行控制的参数,参数有:None,'\n','\r','\r\n'。文件代开方式常见有:'r','rb','r+','rb+','w','wb','w+','a','ab','a+','ab+'。
这就相当于我们在浏览网页时,下载了网页上的图片或者视频。