Python爬虫基础:从urllib到requests

需积分: 9 0 下载量 19 浏览量 更新于2024-08-05 收藏 6KB MD 举报
"爬虫第二天的学习内容主要涵盖了网络请求库的核心知识点,特别是Python的urllib库和requests库。" 在Python的网络爬虫开发中,urllib库是一个基础且重要的工具,它提供了发起网络请求和处理响应的基础功能。urllib库包含多个子模块,其中`urllib.request`是最为核心的部分。 1. urllib.request模块 - `urlopen(url|request:Request, data=None)`:这是发起HTTP请求的关键函数,可以接受URL或Request对象,data参数通常用于POST请求的数据,需转换为bytes类型。 - `urlretrieve(url, filename)`:用于下载URL指向的资源,并保存到本地的filename指定的文件。 - `build_opener(*handler)`:创建一个自定义的opener,可以添加额外的处理器如HTTPHandler、ProxyHandler等。 - `opener.open(url|request, data=None)`:通过已构建的opener发起请求。 在构建请求时,`Request`类是一个重要的辅助工具,可以设置HTTP头、数据等。例如: ```python data = {'wd': '千锋'} request = Request(url, data=urlencode(data).encode()) ``` 这里使用了`urlencode`函数对字典数据进行编码,以便于在网络请求中传输。 2. HTTPHandler和ProxyHandler - `HTTPHandler`处理HTTP协议的请求。 - `ProxyHandler(proxies={'http':'http://proxy_ip:port'})`用于设置代理服务器,通过代理IP和端口发起请求。 3. HTTPCookieProcessor和CookieJar - `HTTPCookieProcessor(CookieJar())`用于处理HTTP请求中的Cookie。 - `http.cookiejar.CookieJar`类是一个存储和管理Cookie的对象。 4. urllib.parse模块 - `quote(txt)`:将中文字符串转换为URL编码,确保字符串安全地用于URL。 - `urlencode(query:dict)`:将字典形式的查询参数转化为URL编码的字符串,适用于GET请求的查询参数。 5. requests库 requests库是对urllib库的进一步封装,提供更加简洁易用的API,是Python中最常用的网络请求库。 - `requests.request()`是requests库的主要函数,可以发送各种HTTP请求,并提供了如超时、会话管理等高级特性。 - 其他常用的方法如`requests.get()`, `requests.post()`等,直接对应HTTP的GET和POST请求。 安装requests库可以使用: ``` pip install requests -i https://mirrors.aliyun.com/pypi/simple ``` 通过这些基础,我们可以构建起简单的网络爬虫,获取网页数据。但要注意,合法和道德的爬虫行为应当尊重网站的robots.txt规则,避免对目标网站造成过大的访问压力。