选择器
- #container,其中#开头代表选择id,其后紧跟id的名称。
- 用.wrapper,这里以点(.)开头代表选择class,其后紧跟class的名称。
- 根据标签名筛选,例如想选择二级标题,直接用h2即可。
- CSS选择器还支持嵌套选择,各个选择器之间加上空格分隔开便可以代表嵌套关系,如#container .wrapper p则代表先选择id为container的节点,然后选中其内部的class为wrapper的节点,然后再进一步选中其内部的p节点。
- 如果不加空格,则代表并列关系,如div#container .wrapper p.text代表先选择id为container的div节点,然后选中其内部的class为wrapper的节点,再进一步选中其内部的class为text的p节点。
更多选择器规则:https://cuiqingcai.com/5476.html
爬虫步骤
- 获取网页
就是获取网页的源代码。请求-得到响应。可用urllib、requests - 提取信息
可用CSS选择器或XPath来提取网页信息的库,如Beautiful Soup、pyquery、lxml等 - 保存数据
可以简单保存为TXT文本或JSON文本,也可以保存到数据库,如MySQL和MongoDB等,也可保存至远程服务器,如借助SFTP进行操作等
爬取的数据类型
- HTML代码
- 有些网页返回的不是HTML代码,而是一个JSON字符串
- 各种二进制数据,如图片、视频和音频
- 各种扩展名的文件,如CSS、JavaScript和配置文件等
JavaScript渲染页面
使用基本HTTP请求库得到的源代码可能跟浏览器中的页面源代码不太一样。对于这样的情况,我们可以分析其后台Ajax接口,也可使用Selenium、Splash这样的库来实现模拟JavaScript渲染。
会话与cookies
会话在服务端,也就是网站的服务器,用来保存用户的会话信息;Cookies在客户端,也可以理解为浏览器端
在成功登录某个网站时,服务器会告诉客户端设置哪些Cookies信息,在后续访问页面时客户端会把Cookies发送给服务器,服务器再找到对应的会话加以判断。如果会话中的某些设置登录状态的变量是有效的,那就证明用户处于登录状态,此时返回登录之后才可以查看的网页内容
反之,如果传给服务器的Cookies是无效的,或者会话已经过期了,我们将不能继续访问页面,此时可能会收到错误的响应或者跳转到登录页面重新登录。
cookies各属性介绍
代理
对于爬虫来说,由于爬虫爬取速度过快,在爬取过程中可能遇到同一个IP访问过于频繁的问题,此时网站就会让我们输入验证码登录或者直接封锁IP,这样会给爬取带来极大的不便。
使用代理隐藏真实的IP,让服务器误以为是代理服务器在请求自己。这样在爬取过程中通过不断更换代理,就不会被封锁,可以达到很好的爬取效果。
代理作用,分类与设置