写爬虫的语言还是有比较多的,java也可以写,但是综合对比起来python拥有许多强大的第三方库,也是一个胶水语言,只要引用第三方库没有做不到的事情,所以我的爬虫就以python为基础撰写。写python的平台很多,我基本以pycharm和anaconda上面进行,学习爬虫的朋友可以先下载好这两个软件,尤其是pycharm我们会频繁的用到。
所谓爬虫就是要模仿浏览器去向服务器请求查看网页,这才是爬虫要做的第一件事情,如果连请求网站都失败,那么自然也无法进入下一步。=============================================
请求的方式有许多,有python自带的,不过我个人推荐使用requests这个第三方库,不仅功能强大而且主要是简单和方便。首先就是安装requests库:
pip install requests
或者在pycharm中:file---settings---python Interpreter点击里面的加号,输入requests,
直到出现successfully的字样后表示安装成功。
然后我们就进入正题,去访问百度的页面
记住用request所获取的网址要完整的,www开头是行不通的。
其次就是想知道获取的东西有哪些,有这样的几个输出:
res.status_code #响应的HTTP状态码
res.text #响应内容的字符串形式
res.content #响应内容的二进制形式
res.encoding #响应内容的编码
import requests
res=requests.get('http://www.baidu.com/')
print(res.status_code)
#200
可以看到状态码为200,那么我们访问百度这个网页已经成功,如果出现了其他状态码则意味着或多或少有问题。
1xx开头的HTTP状态码 说明
100 继续。
101 切换协议。
2xx开头的HTTP 状态码 说明
200 确定。客户端请求已成功。
201 已创建。
202 已接受。
203 非权威性信息。
204 无内容。
205 重置内容。
206 部分内容。表明已部分下载了一个文件。可以续传损坏的下载,或者将下载拆分为多个并发的流。
207 多状态(WebDAV)。此消息之前应该还有一条 XML 消息,其中可能包含几个单独的响应代码,具体取决于发出了多少个子请求。
3xx开头的HTTP 状态码 说明
301 已永久移动。此请求和之后所有的请求都应该转到指定的 URI。
302 对象已移动。对于基于表单的身份验证,此消息通常表示为“对象已移动”。请求的资源临时驻留在不同的 URI。由于重定向有时可能会改变,客户端将来在请求时应该继续使用 RequestURI。只有在 CacheControl 或 Expires 标题字段中指示,此响应才能够缓存。
304 未修改。客户端请求的文档已在其缓存中,文档自缓存以来尚未被修改过。客户端使用文档的缓存副本,而不从服务器下载文档。
307 临时重定向。
4xx开头的HTTP 状态码 说明
400 错误的请求。
401 访问被拒绝。IIS 定义了几个不同的401错误,用于指示更为具体的错误原因。这些具体的错误代码在浏览器中显示,但不在 IIS 日志中显示。详见 401状态码。
403 服务器拒绝请求。可以理解为没有权限访问此网站,服务器能够收到请求但拒绝提供服务。IIS 定义了几个不同的403错误,用于指示更为具体的错误原因,详见 403状态码。
404 服务器找不到请求的网页。例如,访问网站中不存在的页面,或者原有页面被移走或删除,则可能会出现该状态码。IIS 定义了几个不同的404错误,用于指示更为具体的错误原因,详见 404状态码。
405 用来访问本页面的 HTTP 谓词不被允许(方法不被允许)。当客户端向运行 IIS 的服务器发送一个 HTTP 请求,并且该请求包含服务器无法识别的 HTTP 动词时,就会发生此错误。若要解决此问题,请确保客户端的请求使用与 HTTP rfc 兼容的 HTTP 动词。
406 客户端浏览器不接受所请求页面的 MIME 类型。
407 要求进行代理身份验证。
412 前提条件失败。
413 请求实体太大。
414 请求 URI 太长。
415 不支持的媒体类型。
416 无法满足请求的范围。
417 执行失败。
423 锁定的错误。
5xx开头的HTTP 状态码 说明
500 内部服务器错误。很多服务器端错误都可能导致此错误消息。事件查看器日志包含更详细的错误原因。此外,您可以禁用友好 HTTP 错误消息以便收到详细的错误说明。IIS 定义了几个不同的500错误,用于指示更为具体的错误原因,详见 500状态码。
501 页眉值指定了未实现的配置。
502 Web 服务器作为网关或代理服务器时,从上游服务器收到了无效响应。此类错误一般与服务器本身有关(与请求无关)。IIS 定义了几个不同的502错误,用于指示更为具体的错误原因,详见 502状态码。
503 目前服务器无法使用,一般是因为服务器超载或停止维护。
504 网关超时。
505 HTTP 版本不受支持。
只要不是2开头的或多或少都有问题,就直接说是没有请求成功,这与请求头、对面的反爬手段或者是对方的服务器有关,具体后面教大家慢慢识别。