Python爬虫基础:urllib与requests库实战

需积分: 9 2 下载量 30 浏览量 更新于2024-09-03 收藏 464KB PDF 举报
"这篇笔记主要介绍了Python爬虫的基础库使用,包括urllib和requests库,以及如何处理代理IP和不信任的SSL证书问题。作者155ykpya272在2020年的笔记中详细讲解了这些知识点。" 在Python爬虫领域,urllib和requests是最基础且广泛使用的库。urllib库提供了对URL操作的一系列工具,而requests库则是一个更加方便、功能更强大的HTTP客户端。 1. urllib库的使用: - 网络请求:urllib库中的`urllib.request`模块用于发起HTTP请求。你可以通过`urllib.request.urlopen()`函数打开一个URL,获取网页内容。 - 数据保存:`urllib.request.urlretrieve()`函数可以将远程文件下载到本地,参数为URL和本地文件名。 - 编码与解码:`urllib.parse.urlencode()`用于将字典或元组编码成URL查询字符串,方便在URL中传递参数。 - URL解析:`urllib.parse.urlparse()`和`urlsplit()`用于解析URL,返回一个包含scheme(协议)、netloc(网络位置)、path(路径)、params(参数)、query(查询)和fragment(片段)的对象。其中,`urlsplit()`不包含params属性,而`urlparse()`包含。 2. requests库的使用: - requests库比urllib更简洁,提供了一种更直观的方式来发送HTTP请求。例如,`requests.get(url)`可以获取URL内容,`requests.post(url, data)`用于POST请求。 - `requests.Request()`可以创建一个请求对象,允许自定义请求头、cookies等,增强请求的灵活性。 3. 处理代理IP: - 当爬虫因频繁访问被目标网站封禁时,可以使用代理IP来避免。`urllib.request.ProxyHandler()`可以用来设置HTTP或HTTPS代理,例如`proxy_handler = urllib.request.ProxyHandler({"http": "http://proxy.com:8080", "https": "http://proxy.com:8080"})`,然后通过`opener = urllib.request.build_opener(proxy_handler)`创建一个 opener 对象,用于发起带代理的请求。 4. 处理不信任的SSL证书: - 在请求HTTPS站点时,如果遇到未验证的证书,可以使用`urllib.request.Request()`的`context`参数,传入`ssl.create_default_context()`并忽略证书验证,如`context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH, cafile=None, capath=None, cadata=None)`,然后`request = urllib.request.Request(url, context=context)`。 这些基本的Python爬虫技术是进行网页抓取和数据挖掘的基石。了解并熟练掌握这些工具,可以帮助我们构建更复杂的爬虫系统,应对各种网络请求和数据处理的挑战。同时,需要注意的是,在进行爬虫操作时应遵守网站的robots.txt规则,尊重网站的访问权限,并尽量减少对目标服务器的负担。