热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

爬虫-下载网页

fromurllib.requestimporturlopenfromurllib.errorimportURLError,HTTPErrorurlhttp:sou.
from urllib.request import urlopen
from urllib.error import URLError,HTTPError
url = 'http://sou.zhaopin.com/jobs/searchresult.ashx?jl=%E8%A5%BF%E5%AE%89&kw=python&sm=0&p=1'
#url = 'http://httpstat.us/500'
#url = 'http://httpst'
def download(url,num_retries=3):
    print('download... %s' % url)
    try:
        res = urlopen(url)
        code_ = res.info()['Content-Type'].split('=')[-1]
        html = res.read().decode(code_)
    except HTTPError as e:
        print(e.code)
        html = None
        if num_retries > 0:
            print('[E]Http Error!Try Downlooad %d times' % (3-num_retries))
            if hasattr(e,'code') and 500 <= e.code <= 600:
                html = download(url,num_retries-1)
        else:
            print('[E]Failed!')
    except URLError as e:
        html = None
        print('[e]Unloacted URL!',url)
    return html

if __name__ == '__main__':
    download(url,3)
    #print(download(url,3))

爬虫的套路

下载页面
深度,广度访问站点 链接爬虫
解析,抓取数据
性能分析
缓存优化
数据存储
验证COOKIE
验证码
邮箱验证,手机验证

爬虫陷阱

windows python3.6 SublimeText3

import urllib

urllib.request.urlopen()

urlopen 函数就是打开网页

HTTPs http ftp等协议
urlopen函数来处理

urlopen(url,data, timeout,ca…)

超时

url uri

post 提交
get 获取

返回:
Response

read() 返回一个链接的对应HTML源码
解码 decode() 脱掉衣服
编码 encode() 穿上衣服
#utf-8 utf-16
#处理中文
#gbk gb2312
info() 可以获取相应
getcode() 返回Http状态码
geturl() 返回访问的页面地址

HTTPError
处理错误码
400-500 不管
500-600 尝试重新下载
4xx 没有机会挽救了
404 服务器没有这个页面
403 服务器内部错误
401 没权限

5xx 可以挽救的
500 服务器内部错误
503 服务暂不可用

3xx
服务器重定向

200
服务器正常返回
urllib.error
urllib.error.HTTPError:HTTP Error 500: Internal Server Error
urllib.error.URLError:
错误大致分成了两种

URLError
- 本机没网
- 服务器压根不存在
- 被墙了


推荐阅读
  • 抽象工厂模式 c++
    抽象工厂模式包含如下角色:AbstractFactory:抽象工厂ConcreteFactory:具体工厂AbstractProduct:抽象产品Product:具体产品https ... [详细]
  • 微信小程序支付官方参数小程序中代码后端发起支付代码支付回调官方参数文档地址:https:developers.weixin.qq.comminiprogramdeva ... [详细]
  • 万事起于配置开发环境
    万事起于配置开发环境 ... [详细]
  • 本文旨在探讨如何撰写高效且全面的工作总结,特别是针对数据库管理、Java编程及Spring框架的学习与应用。文章通过实例分析,帮助读者掌握工作总结的写作技巧,提高个人工作汇报的质量。 ... [详细]
  • SpringBoot新手入门指南
    本文旨在为初次接触SpringBoot的开发者提供一份详细的入门指导,包括如何快速搭建并运行一个简单的SpringBoot应用。通过本文,读者将了解Maven项目的构建、必要的配置文件设置以及基本的应用开发流程。 ... [详细]
  • 为什么会崩溃? ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • python 类class学习总结(程序验证,超详细,包括多继承、循环、super().xxx等) ... [详细]
  • Mac环境下Java与Ant自动化构建环境搭建指南
    本文详细介绍了如何在Mac操作系统上为测试工程师搭建Java和Ant开发环境,包括环境变量配置等关键步骤。 ... [详细]
  • 本文详细介绍了如何通过配置 Chrome 和 VS Code 来实现对 Vue 项目的高效调试。步骤包括启用 Chrome 的远程调试功能、安装 VS Code 插件以及正确配置 launch.json 文件。 ... [详细]
  • 深入解析Android Activity生命周期
    本文详细探讨了Android中Activity的生命周期,通过实例代码和详细的步骤说明,帮助开发者更好地理解和掌握Activity各个阶段的行为。 ... [详细]
  • 多用户密码验证与加密登录系统
    本文介绍了一种基于多用户密码文件的加密登录方法,通过读取用户密码文件并使用简单的加密算法实现安全登录。文中详细描述了程序的设计思路及其实现过程。 ... [详细]
  • 本文介绍了如何使用Workman框架构建一个功能全面的即时通讯系统,该系统不仅支持一对一聊天、群组聊天,还集成了视频会议和实时音视频通话功能,同时提供了红包发送等附加功能。 ... [详细]
  • 分布式计算助力链力实现毫秒级安全响应,确保100%数据准确性
    随着分布式计算技术的发展,其在数据存储、文件传输、在线视频、社交平台及去中心化金融等多个领域的应用日益广泛。国际知名企业如Firefox、Google、Opera、Netflix、OpenBazaar等均已采用该技术,推动了技术创新和服务升级。 ... [详细]
author-avatar
徐毛毛的大猫儿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有