Python爬虫的简单入门(一) 简介
这一系列教学是基于Python的爬虫教学在此之前请确保你的电脑已经成功安装了Python(本教程使用的是Python3).爬虫想要学的精通是有点难度的,尤其是遇到反爬,多线程,分布式.我的博客适用于对Python爬虫的入门.会讲一些静态动态网页的爬取,及一些简单的验证码的处理.到时候通过爬虫爬取QQ音乐还是很轻松的.
爬虫一般分为三个部分爬取网页,解析网页,保存数据 此节主要讲通过requests获取网页代码
第三方库的安装requests库的安装
安装方法打开cmd输入pip install requests 回车
看一段简单的代码 import requests # 导入requests库 url = "https://www.baidu.com" # 目标网址 r = requests.get(url) # 调用requests的get方法发起get请求 print(r.status_code) # 打印状态码 print(r.text) # 打印获取到的网页代码 运行结果 200 <!DOCTYPE html> <!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css><title>ç¾åº¦ä¸ä¸ï¼ä½ å°±ç¥é</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class=head_wrapper> <div class=s_form> <div class=s_form_wrapper> <div id=lg> <img hidefocus=true src=http://www.likecs.com//www.baidu.com/img/bd_logo1.png width=270 height=129> </div> <form id=form name=f action=http://www.likecs.com//www.baidu.com/s class=fm> <input type=hidden name=bdorz_come value=1> <input type=hidden name=ie value=utf-8> <input type=hidden name=f value=8> <input type=hidden name=rsv_bp value=1> <input type=hidden name=rsv_idx value=1> <input type=hidden name=tn value=baidu><span><input id=kw name=wd class=s_ipt value maxlength=255 autocomplete=off autofocus=autofocus></span><span><input type=submit id=su value=ç¾åº¦ä¸ä¸ autofocus></span> </form> </div> </div> <div id=u1> <a href=http://news.baidu.com name=tj_trnews class=mnav>æ°é»</a> <a href=http://www.hao123.com name=tj_trhao123 class=mnav>hao123</a> <a href=http://map.baidu.com name=tj_trmap class=mnav>å°å¾</a> <a href=http://v.baidu.com name=tj_trvideo class=mnav>è§é¢</a> <a href=http://tieba.baidu.com name=tj_trtieba class=mnav>è´´å§</a> <noscript> <a href=http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u=http%3A%2F%2F%2f%3fbdorz_come%3d1 name=tj_login class=lb>ç»å½</a> </noscript> <script>document.write(\'<a href="http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u=\'+ encodeURIComponent(window.location.href+ (window.location.search === "" ? "?" : "&")+ "bdorz_come=1")+ \'">ç»å½</a>\'); </script> <a href=http://www.likecs.com//www.baidu.com/more/ name=tj_briicon class=bri>æ´å¤äº§å</a> </div> </div> </div> <div id=ftCon> <div id=ftConw> <p id=lh> <a href=http://home.baidu.com>å ³äºç¾åº¦</a> <a href=http://ir.baidu.com>About Baidu</a> </p> <p id=cp>©2017 Baidu <a href=http://www.baidu.com/duty/>使ç¨ç¾åº¦åå¿ è¯»</a> <a href=http://jianyi.baidu.com/ class=cp-feedback>æè§åé¦</a> 京ICPè¯030173å· <img src=http://www.likecs.com//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>这是我们获得的内容,可以看到第一行输出的是200,这就表明成功响应,更多关于HTTP状态码的知识请访问这里
但是这里还有两点奇怪的地方1.网页里面有奇怪的乱码 2.通过浏览器右键查看源代码可知百度的首页代码远比这个多
这也是爬虫十分常见的问题
乱码是因为编码不同引起的
我们可以打印一下网页的编码print(r.encoding)结果为ISO-8859-1,另外我们可以观察上面的网页源代码,发现里面有一句charset=utf-8.说明这个网页的编码为utf-8,两个编码不同当然会乱码.只要加上一句r.encoding = \'utf-8\'就可以了,再次打印可得
<!DOCTYPE html> <!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class=head_wrapper> <div class=s_form> <div class=s_form_wrapper> <div id=lg> <img hidefocus=true src=http://www.likecs.com//www.baidu.com/img/bd_logo1.png width=270 height=129> </div> <form id=form name=f action=http://www.likecs.com//www.baidu.com/s class=fm> <input type=hidden name=bdorz_come value=1> <input type=hidden name=ie value=utf-8> <input type=hidden name=f value=8> <input type=hidden name=rsv_bp value=1> <input type=hidden name=rsv_idx value=1> <input type=hidden name=tn value=baidu><span><input id=kw name=wd class=s_ipt value maxlength=255 autocomplete=off autofocus=autofocus></span><span><input type=submit id=su value=百度一下 autofocus></span> </form> </div> </div> <div id=u1> <a href=http://news.baidu.com name=tj_trnews class=mnav>新闻</a> <a href=http://www.hao123.com name=tj_trhao123 class=mnav>hao123</a> <a href=http://map.baidu.com name=tj_trmap class=mnav>地图</a> <a href=http://v.baidu.com name=tj_trvideo class=mnav>视频</a> <a href=http://tieba.baidu.com name=tj_trtieba class=mnav>贴吧</a> <noscript> <a href=http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u=http%3A%2F%2F%2f%3fbdorz_come%3d1 name=tj_login class=lb>登录</a> </noscript> <script>document.write(\'<a href="http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u=\'+ encodeURIComponent(window.location.href+ (window.location.search === "" ? "?" : "&")+ "bdorz_come=1")+ \'">登录</a>\'); </script> <a href=http://www.likecs.com//www.baidu.com/more/ name=tj_briicon class=bri>更多产品</a> </div> </div> </div> <div id=ftCon> <div id=ftConw> <p id=lh> <a href=http://home.baidu.com>关于百度</a> <a href=http://ir.baidu.com>About Baidu</a> </p> <p id=cp>©2017 Baidu <a href=http://www.baidu.com/duty/>使用百度前必读</a> <a href=http://jianyi.baidu.com/ class=cp-feedback>意见反馈</a> 京ICP证030173号 <img src=http://www.likecs.com//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>这下就清楚多了.