python编写爬虫时urllib.request库和requests库的区别
关于urllib.request和requests的区别简单通俗的来说就是前者 不如后者更加使用和方便.
urllib.request
导入方法:
import urllib.request
简介:
该模块中的urlopen()方法能对网站发出最基本的请求,在一些没有反爬机制的网站中可以使用该方法去对web网页发送请求,然后解码,从而获得网页.
url1 = "http://www.zueb.edu.cn/site/xsgate/xsyw/index.html"
print(url1)
# 打开网页
rep = urllib.request.urlopen(url1)
# 获取网页内容
try:
html = rep.read().decode('utf-8')
except:
print("出错了!")
其中urlopen()方法返回的是一个http.client.HTTPResponse对象,然后通过read()方法进一步处理,一般情况下使用read()后处理后,我们需要用decode()进行解码,通常为utf-8,经过这些步骤后,最终才获取到我们想要的网页。
urllib库的response对象是先创建httprequest对象,装载到reques.urlopen里完成http请求,返回的是httpresponse对象,实际上是html属性.
requests
导入方法:
import requests
简介:
通常而言,在我们使用爬虫时,更建议用requests库,因为requests比urllib更为便捷,requests可以直接调用get,post,而urllib.request只能先构造get,post,然后再调用.
requests库调用是requests.get方法传入url和参数,返回的对象是Response对象,打印出来是显示响应状态码,通过.text 方法可以返回是unicode 型的数据.
框架为:
def getHTML(url):
try:
r=requests.get(url)
r.raise_for_status()
r.encoding =r.apparent_encoding
return r.text
except:
return "产生异常."
总而言之,urllib.request没有requests更加方便.
关于反爬:
通常而言,在我们编写爬虫爬取网站时会遇到一些具有反爬机制的网站,这时候我们要对爬虫进行伪装,通常方法是在构造http请求的时候,要加上一些额外的请求头,或者添加代理服务器。这些信息我们可以在用浏览器正常打开网站时或者通过编写一些代码获取.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)