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请求的时候,要加上一些额外的请求头,或者添加代理服务器。这些信息我们可以在用浏览器正常打开网站时或者通过编写一些代码获取.

posted @   冷月半明  阅读(78)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示