python爬虫基础(一)

get与post

了解get与post之前,首先对HTTP协议有些了解

超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信。HTTP 的工作方式是客户机与服务器之间的请求——应答协议。web浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端。 举例:客户端(浏览器)向服务器提交 HTTP请求;服务器向客户端返回响应。响应包含关于请求的状态信息以及可能被请求的内容。

在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。

  • GET - 从指定的资源请求数据。
  • POST - 向指定的资源提交要被处理的数据

例:
1.get请求:

/test/demo_form.asp?name1=value1&name2=value2
//get请求的参数可以直接在网址中看到
  • GET 请求可被缓存
  • GET 请求保留在浏览器历史记录中
  • GET 请求可被收藏为书签
  • GET 请求不应在处理敏感数据时使用
  • GET请求有长度限制
  • GET 请求只应当用于取回数据

2.post请求

POST /test/demo_form.asp HTTP/1.1
Host: qq.com
name1=value1&name2=value2
  • POST 请求不会被缓存
  • POST 请求不会保留在浏览器历史记录中
  • POST 不能被收藏为书签
  • POST 请求对数据长度没有要求

练习

尝试使用requests或者是urllib用get方法向https://www.baidu.com/发出一个请求,并将其返回结果输出。
1.使用requests库

import requests

url="http://www.baidu.com"
req=requests.get(url)
print(req)

返回结果:

<Response [200]>

证明正常获得了网站信息,常见的HTTP返回值大约有以下几种:

1、Http/1.1 200 OK 访问正常
表示成功访问,为网站可正常访问时的状态。
2、Http/1.1 301 Moved Permanently 301重定向永久重定向
对搜索引擎相对友好的跳转方式,当网站更换域名时可将原域名作301永久重定向到新域名,原域名权重可传递到新域名,也常有将不含www的域名301跳转到含www的,如xxx.com通过301跳转到www.xxx.com
3、Http/1.1 302 Found 为临时重定向
易被搜索引擎判为作弊,比如asp程序的response.Redirect()跳转、js跳转或静态http跳转。
4、Http/1.1 400 Bad Request 域名绑定错误
一般是服务器上域名未绑定成功,未备案等情况。
5、Http/1.1 403 Forbidden 没有权限访问此站
你的IP被列入黑名单,连接的用户过多,可以过后再试,网站域名解析到了空间,但空间未绑定此域名等情况。
6、Http/1.1 404 Not Found 文件或目录不存在
表示请求文件、目录不存在或删除,设置404错误页时需确保返回值为404。常有因为404错误页设置不当导致不存在的网页返回的不是404而导致搜索引擎降权。
7、Http/1.1 500 Internal Server Error 程序或服务器错误
表示服务器内部程序错误,出现这样的提示一般是程序页面中出现错误,如小的语法错误,数据连接故障等。

2.使用urllib

import urllib.request

response = urllib.request.urlopen('http://www.baidu.com')
result = response.read().decode('utf-8')
print(result)

返回结果:百度网页的HTML源码
在这里插入图片描述

Urllib库详解

  • urlopen()方法

urlopen是request的其中一个方法,功能是打开一个URL,URL参数可以是一串字符串(如上例子中一样),也可以是Request对象。它会返回一个类文件对象

def urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TI
            MEOUT,*, cafile=None, capath=None, 
            cadefault=False, context=None):
  • request()方法
class Request:
    def __init__(self, url, data=None, headers={},
                 origin_req_host=None, unverifiable=False,
                 method=None):

headers很有用,有些网站有反爬虫机制,检查请求若没有headers就会报错,因此博主为保证爬虫的稳定性,基本每次都会将headers信息加入进去,这是反爬的简单策略之一。

查看headers可以【火狐/谷歌浏览器】CTRL+shift+I,选择network,就可以找到了。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值