爬虫:获取页面 -- request库的使用

摘要

requests是一个封装了python自带的urllib模块的一个易用型模块,它使得程序员对发送请求和获取响应等http操作的代码编写更加简单。

说明

以下代码均默认已导入相关模块:

import requests

获取页面

基本步骤如下:

  1. 设置请求头信息,一般是改变user-agent

  2. 通过get()方法获取页面信息

  3. 判断是否发生异常

  4. 如无异常返回页面的文本或者二进制信息

以下是一个获取目标页面的方法:

    def getHTMLText(url):
    '获取目标页面'
    try:
        kv = {"user-agent":"Mozilla/5.0"} # 设置user-agent
        r = requests.get(url, timeout=30) # 获取页面,设置超时时间为30s
        r.raise_for_status() # 如果状态码不是200,引发HTTPError异常
        r.encoding = r.apparent_encoding  # 设置编码会页面的正确编码
        return r.text  # 如果需要二进制信息,应该使用r.content
    except:
        return '产生异常'

上面代码实现了一个获取目标页面的方法,我们可以使用这个方法进行一些测试,比如:

访问京东的一个商品页面:

    url = "https://item.jd.com/2967929.html"
    text = getHTMLText(url)
    print(text[:1000]) # 输出前面1000个字符的信息

访问亚马逊的一个商品页面:

    url = "https://www.amazon.cn/dp/B0083DP0CY?_encoding=UTF8&ref_=pc_cxrd_658409051_recTab_658409051_t_1&pf_rd_p=610d12d5-867d-4582-81bc-05492d242e3f&pf_rd_s=merchandised-search-3&pf_rd_t=101&pf_rd_i=658409051&pf_rd_m=A1AJ19PSB66TGU&pf_rd_r=QT2Q1KC61VNBDYMHX928&pf_rd_r=QT2Q1KC61VNBDYMHX928&pf_rd_p=610d12d5-867d-4582-81bc-05492d242e3f"
    text = getHTMLText(url)
    print(text[:1000]) # 输出前面1000个字符的信息

可以发现,上面两个例子的代码除了url外是相同的,不过这两个网站实际上又是有所不同的,就是京东不会限制python程序的访问,而亚马逊会。在这里,网站服务器是通过判断请求头的User-Agent字段来判断是否是浏览器访问,如果不是,可能会被网站禁止访问。所有,最好在发送请求之前先设置好User-Agent。
User-Agent的设置:r = requests.get(url, headers={"User-Agent":"Mozilla/5.0"})
查看当前请求头信息:r.headers

转载于:https://www.cnblogs.com/githubMYL/p/9601580.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值