DebugLog实战
        有时候我们需要在程序运行时,一边运行一边打印调试日志。此时需要开启DebugLog。
        如何开启:
        首先将debuglevel设置为1,然后用urllib.request.build_opener()创建自定义对象opener将debuglevel作为参数传入接着用urllib.request.install_opener()创建全局默认对象opener,进行后续操作。
import urllib.request
#复制区-----
httphd=urllib.request.HTTPHandler(debuglevel=1)
httpshd=urllib.request.HTTPSHandler(debuglevel=1)
opener=urllib.request.build_opener(httphd,httpshd)
urllib.request.install_opener(opener)
#-----复制区
data=urllib.request.urlopen("http://edu.51cto.com")
这样就可以边执行程序边打印调试Log日志。
 
异常处理神器——URLError实战
    如何合理的处理异常:介绍两个类
        URLError和他的一个子类HTTPError
实例1:
import urllib.request
import urllib.error
try:
    urllib.request.urlopen("http://blog.csdn.net")
except urllib.error.URLError as e: #这里csdn禁止对文章爬取,所以没有模拟浏览爬会出现403错误
#由于触发了HTTPError产生的URLError异常,这里使用HTTPError替换亦可以,
#但是HTTPError不能处理:连接不上服务器,远程url不存在、无网络的异常
    print(e.code)
    print(e.reason)
补充知识:状态码
200----一切正常
301----重定向到新的url,永久性
302----重定向到临时的url,非永久性
304----请求的资源未更新
400----非法请求
401----请求未经授权
403----禁止访问
404----没有找到对应页面
500----服务器内部出现错误
501----服务器不支持实现请求所需要的功能
实际上我们处理异常不知道使用HTTPError能不能处理。我们可以进行优化,先让HTTPError处理,不行再让URLError处理
代码如下:
try:
    urllib.request.urlopen("http://blog.baidusss.net")#不存在的网址
except urllib.error.HTTPError as e:
    print(e.code)
    print(e.reason)
except urllib.error.URLError as e:
    print(e.reason)
 
代码再改进,整合一下:不管何种原因都可以解决
try:
    urllib.request.urlopen("http://blog.csdn.net")
except urllib.error.URLError as e:
    if hasattr(e,"code"):
        print(e.code)
    if hasattr(e,"reason"):
        print(e.reason)
 
正则表达式入门
    正则表达式就是描述字符串排列的一套规则。比如电子邮件、手机号的字符都是满足一定的规则的,我们可以用正则来表达他们的格式。在python中我们用re模块来实现正则。
    基础知识:
 NO1 、原子:正则的基本组成单位,每个正则中至少包含一个原子。
    原子的类型:
            1:普通字符
import re
pattern="yue"
string="http://yum.iqianyue.com"
result1=re.search(pattern,string)
print(result1)
#结果:<_sre.SRE_Match object; span=(16, 19), match='yue'>
这里我们匹配两个字符串,成功匹配到了字符结果“yue”         
 
   2:非打印字符 
        指在一些字符串中用于格式控制的符号,如:
 
符号 含义
\n 用于匹配一个换行符
\t 用于匹配一个制表符
import re
 
pattern="\n"
string='''http://yum.iqianyue.com
http://baidu.com'''
result=re.search(pattern,string)
print(result)
 
 
            3:通用字符 
一个原子可以匹配一类字符
 
符号
含义
\w
匹配任意一个字母、数字或下划线
\W
匹配除字母、下划线、数字以外的任意字符
\d
匹配任意一个十进制数
\D
匹配十进制以外的任意一个其他字符
\s
匹配任意一个空白字符
\S
匹配除空白字符以外的任意一个其他字符
 
          
pattern="\w\dpython\w"
string="abcdfphp345python_py"
result=re.search(pattern,string)
print(result)
#结果<_sre.SRE_Match object; span=(9, 18), match='45python_'>
 
 
 
  4:原子表
 
使用原子表定义一组地位相等的原子,匹配是会取原子表中任意一个原子进行匹配,在Python中原子表用[]表示
如[xyz]对应源字符是“xpython”如果用re.search匹配,就可以匹配到“xpy”,因为只要py的前一位是xyz的任一个原子就可以匹配成功
 
    
pattern1="\w\dpython[xyz]\w"
string="abcdfphp345pythony_py"
result=re.search(pattern1,string)
print(result)
#结果:<_sre.SRE_Match object; span=(9, 19), match='45pythony_'>
 
 
 此文是我在学习《精通Python网络爬虫》(韦玮著)的总结,纯手打。
 
 
 
 
 
 
 
 
 
 

python爬虫第三天的更多相关文章

  1. 3.Python爬虫入门三之Urllib和Urllib2库的基本使用

    1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它是一段HTML代码,加 JS.CSS ...

  2. Python爬虫进阶三之Scrapy框架安装配置

    初级的爬虫我们利用urllib和urllib2库以及正则表达式就可以完成了,不过还有更加强大的工具,爬虫框架Scrapy,这安装过程也是煞费苦心哪,在此整理如下. Windows 平台: 我的系统是 ...

  3. Python爬虫实战三之实现山东大学无线网络掉线自动重连

    综述 最近山大软件园校区QLSC_STU无线网掉线掉的厉害,连上之后平均十分钟左右掉线一次,很是让人心烦,还能不能愉快地上自习了?能忍吗?反正我是不能忍了,嗯,自己动手,丰衣足食!写个程序解决掉它! ...

  4. 转 Python爬虫入门三之Urllib库的基本使用

    静觅 » Python爬虫入门三之Urllib库的基本使用 1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器 ...

  5. Python爬虫学习三------requests+BeautifulSoup爬取简单网页

    第一次第一次用MarkDown来写博客,先试试效果吧! 昨天2018俄罗斯世界杯拉开了大幕,作为一个伪球迷,当然也得为世界杯做出一点贡献啦. 于是今天就编写了一个爬虫程序将腾讯新闻下世界杯专题的相关新 ...

  6. Python爬虫实战三之爬取嗅事百科段子

    一.前言 俗话说,上班时间是公司的,下班了时间才是自己的.搞点事情,写个爬虫程序,每天定期爬取点段子,看着自己爬的段子,也是一种乐趣. 二.Python爬取嗅事百科段子 1.确定爬取的目标网页 首先我 ...

  7. Python爬虫利器三之Xpath语法与lxml库的用法

    前面我们介绍了 BeautifulSoup 的用法,这个已经是非常强大的库了,不过还有一些比较流行的解析库,例如 lxml,使用的是 Xpath 语法,同样是效率比较高的解析方法.如果大家对 Beau ...

  8. python爬虫学习(三):使用re库爬取"淘宝商品",并把结果写进txt文件

    第二个例子是使用requests库+re库爬取淘宝搜索商品页面的商品信息 (1)分析网页源码 打开淘宝,输入关键字“python”,然后搜索,显示如下搜索结果 从url连接中可以得到搜索商品的关键字是 ...

  9. python爬虫(三)

    webdriver Selenium是ThroughtWorks公司开发的一套Web自动化测试工具.它分为三个组件:Selenium IDE,Selenium RC (Remote Control), ...

随机推荐

  1. [Kubernetes]容器日志的收集与管理

    在开始这篇文章之前,首先要明确一点: Kubernetes 中对容器日志的处理方式,都叫做 cluster-level-logging ,也就是说,这个日志处理系统,与容器, Pod 以及 Node ...

  2. 3D Slicer中文教程(七)—图像中值滤波

    1.中值滤波概念 中值滤波是对一个滑动窗口内的诸像素灰度值排序,用其中值代替窗口中心象素的原来灰度值,它是一种非线性的图像平滑法,它对脉冲干扰级椒盐噪声的抑制效果好,在抑制随机噪声的同时能有效保护边缘 ...

  3. python(random模块)取10以内的随机数

    上面有个selenium-webdriver循环点击百度搜索结果以及获取新页面的handler文章,随机获取百度搜索结果中不同id的结果,实现代码如下: #coding:utf- import ran ...

  4. emos邮件系统的web密码修改方法

     作者:邓聪聪 1.修改web管理界面的登陆密码,数据库修改管理员密码,有root用root,没root用系统用户.查看方法 进入数据库查看到管理表项中的root管理账户信息, mysql> u ...

  5. go语言map操作

    package main import "fmt" func main() { var m = map[int]string{ 90: "优秀", 80: &q ...

  6. jmeter知识总结(一)

    Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件.相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是每个测试人员都必须要掌握的工 ...

  7. jenkins+git(完全萌新的一篇,求指点)

    自己不熟悉所以打算写一份新手的自我理解,有错误欢迎大家指出 公司使用jenkins和git对代码进行管理 首先我们将代码放在git上,然后通过一些方法(我还不知道啥方法) 将git的代码放在jenki ...

  8. C# 高级编程05----常用修饰符

    常用修饰符: 1.访问可见性修饰符 修饰符 应用于 说明 public 类型或成员 任何代码都可访问 protected 类型或内嵌类型的成员 只有子类能访问 internal 类型或成员 只能在包含 ...

  9. 敏捷开发相关编辑思想(SOA、DDD、REST、CQRS)

    这是第一次写有关编程思想的东西. 1.理解Martin Fowler提出的SOA(面向服务歧义) 2.理解DDD(Domain-Driven Design领域驱动设计): http://blog.cs ...

  10. [转] JavaScript中in操作符(for..in)、Object.keys()和Object.getOwnPropertyNames()的区别

    ECMAScript将对象的属性分为两种:数据属性和访问器属性.每一种属性内部都有一些特性,这里我们只关注对象属性的[[Enumerable]]特征,它表示是否通过 for-in 循环返回属性,也可以 ...