zoukankan      html  css  js  c++  java
  • 爬虫:获取页面 -- 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

  • 相关阅读:
    Nginx proxy开启cache缓存
    Nginx Server 配置
    nginx 全局配置
    Nginx 配置文件解析
    Python-Scrapy框架
    Python-shutil模块
    os模块3
    os模块
    python os模块atime ,ctime,mtime意义
    Python-正则表达式
  • 原文地址:https://www.cnblogs.com/githubMYL/p/9601580.html
Copyright © 2011-2022 走看看