Python网络爬虫【持续更新】-requests库的使用
什么是request库
- Requests是一常用的http请求库,它使用python语言编写,可以方便地发送http请求,以及方便地处理响应结果。
- Requests库使用了面向对象的思想。对于用户的请求,封装成了一个request类,此类包含了Http协议请求的部分相关内容。在用户使用了相应的Get等方法后,会返回一个response对象,该对象包含了Http协议相应的部分相关内容。方便用户通过这些对象,进行相关的分析和操作。
request库的基本用法
常见的属性
- requests.encoding -通过请求头,分析出当前的编码
- requests.apparentEncoding - 通过内容,分析出当前编码
- requests.status_code - 返回当前请求的状态码
- requests.content -返回二进制形式的相应内容
- requests.text -返回文本形式的相应内容
常见的方法
-
request.get(url,**arg) -相应类型的还有post、put等类似,不赘述
对于get方法而言,参数分为两部分。一部分是url,即当前要访问的url;另一部分是各种参数,例如:paramers,headers等等,这些参数可以完善一个请求的相关信息。 -
request.raise_for_status() -判断本次请求返回的状态码,如果不是200则抛出异常
使用request库时注意的一些事项
- 由于许多网站都设置了反爬虫机制,例如Robots协议,所以爬虫的时候可能会出现一些问题。当你使用第三方库爬虫的时候,requsts请求头会把你的身份信息泄漏(请求头会有个标志,代表你是通过爬虫的方式来访问其网站的),那么这样网站往往会拒绝你的访问。此时,就需要利用requests.get()方法里面的参数设置(headers=xxx),将你的头部信息改为一般用户的访问,才能够不被浏览器拦截。
- 爬虫的时候,快速多次访问同一个域名,可能会导致你的ip被拉入黑名单,所以编程的时候一定不要过频访问同一个地址(或者技术可以的话,实现伪ip实时转换来反反爬虫)。
- 目前很多网站都规定了可爬虫范围(每个网站根目录下都有个robots.txt文件),如果你访问了不允许爬虫的网站,可能需要承担法律责任。慎重!!!
request代码基本框架
import requests
def getHTML(url):
try:
str_Head = {'user-agent':'Mozilla/5.0'}
r = requests.get(url,headers=str_Head)
r.raise_for_status()
r.encoding = r.apparent_encoding
print(r.text)
except:
print("Failure accessing...try again")
if __name__ == "__main__":
url = "https://www.amazon.com/"
getHTML(url)