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网络数据采集>,例子是照搬的,觉得跟着敲一遍还是有作用的,所以记录 ...
随机推荐
- 对生成对抗网络GANs原理、实现过程、应用场景的理解(附代码),另附:深度学习大神文章列表
https://blog.csdn.net/love666666shen/article/details/75522489 https://blog.csdn.net/yangdelong/artic ...
- 洛谷 P2571 [SCOI2010]传送带 题解
每日一题 day51 打卡 Analysis 这道题是用非常恶心的三分套三分做的,有一个技巧是不要枚举坐标,枚举两条线段构成三角形的相似比就好了. 了解思路就还挺好写的(尽管我还调了三天) #incl ...
- CentOS yum repo
CentOS yum repo 阿里云的 一个是Centos-6的 一个是Centos-7 # CentOS 5 wget -O /etc/yum.repos.d/CentOS-Base.rep ...
- 安卓入门教程(十三)-Activity
已经发表个人公众号 什么是Activity? Android是由Activity,Service,Content,Provider等组件组成,其中要讲的就是Activity组件,这是最基本,且常用的组 ...
- Docker快速部署gitlab应用实战
Gitlab是一个用于仓库管理系统开源项目,使用Git作为代码管理工具,并在此基础上搭建的web服务,可通过web界面进行访问公开或者私人项目,拥有类似于GIthub类似的功能,能够浏览源代码,可管理 ...
- python中的函数---函数应用
每种编程语言中,都需要函数的参与,python同样也不例外.函数是集成的子程序,是算法实现的最小方法单位,是完成基本操作的手段的集合.编程中能够灵活应用函数,提高程序设计的简单化:实现代码应用的复用化 ...
- 第06组 Alpha冲刺(3/4)
队名:福大帮 组长博客链接:https://www.cnblogs.com/mhq-mhq/p/11899921.html 作业博客 :https://edu.cnblogs.com/campus/f ...
- IIS 7中添加FTP站点并设置指定用户访问
1. 开启 FTP 和 IIS 服务功能: 2. 添加新用户: 打开计算机管理界面: 展开“本地用户与组”: 邮件点击“用户”->点击“创建新用户”: 在创建新用户对话框输入用户 ...
- Spark2.x(五十七):User capacity has reached its maximum limit(用户容量已达到最大限制)
背景: 目前服务器资源是43个节点,每个节点配置信息如下:24VCores 64G yarn配置情况: yarn.scheduler.minimum-allocation-mb 单个容器可申请的最小 ...
- Python推荐一整套开发工具
原文:https://sourcery.ai/blog/python-best-practices/ 在开始一个新的Python项目时,很容易不做规划直接进入编码环节.花费少量时间,用最好的工具设置项 ...