20190715《Python网络数据采集》第 1 章
《Python网络数据采集》7月8号-7月10号,这三天将该书精读一遍,脑海中有了一个爬虫大体框架后,对于后续学习将更加有全局感。
此前,曾试验看视频学习,但是一个视频基本2小时,全部拿下需要30多个视频,如此看来每天学习一个视频时间都是非常吃力的,且都属于被动输入,尤其是在早上学习视频容易犯困。
故此,及时调整学习策略,采用 “电子书+廖雪峰网页教程+实操+Google+咨询程序员+每日总结归纳” 的主动学习模式,如此更加高效,更加容易把控进度!
学习爬虫,一者兴趣,致力于借此兴趣驱动力掌握编程思维,进而让自己有能够将想法做成产品的的技能;二者,为了一个近在眼前的爬虫商业化机遇,更希望借此为自己增加一个收入来源。
1. 爬虫常见得异常及处理方法,用一个简单得爬虫代码解释,核心知识点:
(1)异常一:网页在服务器上不存在(或者获取页面时,出现错误)。该异常发生时,程序会返回HTTP错误,如“404 Page Not Found” "500 Internet Server Error"等。
(2)异常二:服务器不存在(即,链接打不开,或者URL链接写错了),这时,urlopen会返回一个None对象。
Ps:有的时候,网页已经从服务器成功获取,如果网页上的内容并非完全是我们期望的那样,也会出现异常。
1 from urllib.request import urlopen
2 from bs4 import BeautifulSoup
3
4 try:
5 html = urlopen("http://pythonscraping.com/pages/page1.html")
6 # print(html.read())
7 # 检测:网页在服务器上是否存在(或者获取页面时是否出现错误)
8 except HTTPError as e:
9 print(e)
10 else:
11 bsobj = BeautifulSoup(html.read())
12 # 检测:服务器是否存在(就是说链接能否打开,或者是URL链接写错了)
13 if html is None:
14 print("URL is not found")
15 else:
16 print(bsobj.h1)
17 # print(bsobj.title)
1 # 以上代码更改为检测异常更全面、可读性更强的代码,如下:
2 from urllib.request import urlopen
3 from bs4 import BeautifulSoup
4
5 def getTitle(url):
6 try:
7 html = urlopen(url)
8 except HTTPError as e:
9 return None
10 try:
11 bsobj = BeautifulSoup(html.read())
12 title = bsobj.body.h1
13 except AttributeError as e:
14 return
15 return title
16
17 title1 = getTitle("http://pythonscraping.com/pages/page1.html")
18 if title1 == None:
19 print("Title could not be found")
20 else:
21 print(title1)
该部分代码执行时,出现报错:
Google发现,Tag和Space不能混合使用。原始第五行,def被tab缩进,后删除该tab缩进,问题解决。该问题具体原因,仍需要仔细查明!!!
20190715《Python网络数据采集》第 1 章的更多相关文章
- Python网络数据采集PDF
Python网络数据采集(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/16c4GjoAL_uKzdGPjG47S4Q 提取码:febb 复制这段内容后打开百度网盘手 ...
- Python网络数据采集PDF高清完整版免费下载|百度云盘
百度云盘:Python网络数据采集PDF高清完整版免费下载 提取码:1vc5 内容简介 本书采用简洁强大的Python语言,介绍了网络数据采集,并为采集新式网络中的各种数据类型提供了全面的指导.第 ...
- 笔记之Python网络数据采集
笔记之Python网络数据采集 非原创即采集 一念清净, 烈焰成池, 一念觉醒, 方登彼岸 网络数据采集, 无非就是写一个自动化程序向网络服务器请求数据, 再对数据进行解析, 提取需要的信息 通常, ...
- Python网络数据采集7-单元测试与Selenium自动化测试
Python网络数据采集7-单元测试与Selenium自动化测试 单元测试 Python中使用内置库unittest可完成单元测试.只要继承unittest.TestCase类,就可以实现下面的功能. ...
- Python网络数据采集6-隐含输入字段
Python网络数据采集6-隐含输入字段 selenium的get_cookies可以轻松获取所有cookie. from pprint import pprint from selenium imp ...
- Python网络数据采集4-POST提交与Cookie的处理
Python网络数据采集4-POST提交与Cookie的处理 POST提交 之前访问页面都是用的get提交方式,有些网页需要登录才能访问,此时需要提交参数.虽然在一些网页,get方式也能提交参.比如h ...
- Python网络数据采集3-数据存到CSV以及MySql
Python网络数据采集3-数据存到CSV以及MySql 先热热身,下载某个页面的所有图片. import requests from bs4 import BeautifulSoup headers ...
- Python网络数据采集2-wikipedia
Python网络数据采集2-wikipedia 随机链接跳转 获取维基百科的词条超链接,并随机跳转.可能侧边栏和低栏会有其他链接.这不是我们想要的,所以定位到正文.正文在id为bodyContent的 ...
- Python网络数据采集1-Beautifulsoup的使用
Python网络数据采集1-Beautifulsoup的使用 来自此书: [美]Ryan Mitchell <Python网络数据采集>,例子是照搬的,觉得跟着敲一遍还是有作用的,所以记录 ...
随机推荐
- Linux 字符集的查看及修改
一·查看字符集 字符集在系统中体现形式是一个环境变量,以CentOS6.5为例,其查看当前终端使用字符集的方式可以有以下几种方式: 第一种: [root@Testa-www tmp]# echo $L ...
- javascript 终极循环方法for... of ..推荐
js目前有很多的循环方法,如for, forEach, for .. in, for of 等等,而在ES6里面,我们又增加了一些数据结构,比如set,map,Symbol等. 那么我们该选取哪一 ...
- WinDbg常用命令系列---!envvar
!envvar 简介 !envvar扩展命令显示特定环境变量的值. 使用形式 !envvar Variable 参数 Variable指定显示其值的环境变量.变量不区分大小写. 环境 Windows ...
- 计蒜之道 百度AI小课堂-上升子序列
计蒜之道 百度AI小课堂-上升子序列 题目描述 给一个长度为 \(n\) 的数组 \(a\) .试将其划分为两个严格上升子序列,并使其长度差最小. 输入格式 输入包含多组数据. 数据的第一行为一个正整 ...
- app内嵌H5的上传图片的功能
1.上传组件 <!-- - hasBorder {Boolean} cell底部边框,oneline 为 true 有效 - inlineBorder {Boolean} cell底部短边框 - ...
- 实现MyBatis批量查询
Service public List<DeviceBean> getDeviceList(Map<String, Object> parameter);Serv ...
- ICEM-三角形特征几何
原视频下载地址:https://pan.baidu.com/s/1qY8SKri 密码: wf17
- Linux系统学习(二)一Linux基本操作
一.Linux的目录结构 1.1 Linux的目录结构图 1.2 目录内容 /:这就是根目录.对你的电脑来说,有且只有一个根目录.所有的东西,我是说所有的东西都是从这里开始.举个例子:当你在终端里输入 ...
- DIV块中 元素垂直居中
1 DIV块中 元素垂直居中 作者:知乎用户链接:https://www.zhihu.com/question/20543196/answer/99429177来源:知乎著作权归作者所有.商业转载请联 ...
- (转载)基于Linux C的socket抓包程序和Package分析
转载自 https://blog.csdn.net/kleguan/article/details/27538031 1. Linux抓包源程序 在OSI七层模型中,网卡工作在物理层和数据链路层的MA ...