51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1692|回复: 1
打印 上一主题 下一主题

Python网络爬虫-你的第一个爬虫(requests库)

[复制链接]
  • TA的每日心情
    无聊
    5 小时前
  • 签到天数: 528 天

    连续签到: 1 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2019-1-14 14:19:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 测试积点老人 于 2019-1-14 14:22 编辑

    0.采用requests库

    虽然urllib库应用也很广泛,而且作为Python自带的库无需安装,但是大部分的现在python爬虫都应用requests库来处理复杂的http请求。requests库语法上简洁明了,使用上简单易懂,而且正逐步成为大多数网络爬取的标准。


    1. requests库的安装

    采用pip安装方式,在cmd界面输入:

    1. pip install requests
    复制代码

    2. 示例代码

    我们将处理http请求的头部处理来简单进行反反爬虫处理,以及代理的参数设置,异常处理等。

    1. import requests


    2. def download(url, num_retries=2, user_agent='wswp', proxies=None):
    3.     '''下载一个指定的URL并返回网页内容
    4.         参数:
    5.             url(str): URL
    6.         关键字参数:
    7.             user_agent(str):用户代理(默认值:wswp)
    8.             proxies(dict): 代理(字典): 键:‘http’'https'
    9.             值:字符串(‘http(s)://IP’)
    10.             num_retries(int):如果有5xx错误就重试(默认:2)
    11.             #5xx服务器错误,表示服务器无法完成明显有效的请求。
    12.             #https://zh.wikipedia.org/wiki/HTTP%E7%8A%B6%E6%80%81%E7%A0%81
    13.     '''
    14.     print('==========================================')
    15.     print('Downloading:', url)
    16.     headers = {'User-Agent': user_agent} #头部设置,默认头部有时候会被网页反扒而出错
    17.     try:
    18.         resp = requests.get(url, headers=headers, proxies=proxies) #简单粗暴,.get(url)
    19.         html = resp.text #获取网页内容,字符串形式
    20.         if resp.status_code >= 400: #异常处理,4xx客户端错误 返回None
    21.             print('Download error:', resp.text)
    22.             html = None
    23.             if num_retries and 500 <= resp.status_code < 600:
    24.                 # 5类错误
    25.                 return download(url, num_retries - 1)#如果有服务器错误就重试两次

    26.     except requests.exceptions.RequestException as e: #其他错误,正常报错
    27.         print('Download error:', e)
    28.         html = None
    29.     return html #返回html


    30. print(download('http://www.baidu.com'))
    复制代码

    结果:

    1. Downloading: http://www.baidu.com
    2. <!DOCTYPE html>
    3. <!--STATUS OK-->
    4. ...
    5. </script>

    6. <script>
    7. if(navigator.cookieEnabled){
    8.     document.cookie="NOJS=;expires=Sat, 01 Jan 2000 00:00:00 GMT";
    9. }
    10. </script>



    11. </body>
    12. </html>
    复制代码


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-18 14:52 , Processed in 0.063408 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表