爬虫的第一步需要将网页下载下来,下面介绍下载网页内容的方法。

download函数

import urllib.request ## Python2与Python3的区别def download(url):req = urllib.request.Request(url)response = urllib.request.urlopen(req)return response.read()url = "http://example.webscraping.com/"
html = download(url)print(html)

这样运行的结果是直接输出一大堆

我是直接使用Python3自带的IDLE写的程序,输出结果的时候经常卡死,所以可以选择将爬取下来的内容写入文件中,这样速度会快很多。

## 将结果写入到文件的改进版本,适用于英文网站
import urllib.requestdef download(url):req = urllib.request.Request(url)response = urllib.request.urlopen(req)return response.read().decode("utf-8")url = "http://example.webscraping.com/"
html = download(url)html = str(html)
## 将一大堆乱七八糟的代码转换为比较美观的格式
html = html.replace("\xa0", " ")
html = html.replace("\xa9", " ")
html.encode("gbk")file_name = 'f:/Python/用Python写网络爬虫/练习/crawling_file.txt'
file_open = open(file_name, "a")
file_open.write(html)
file_open.close()

这样执行之后会出现一个crawling_file.txt文件


捕获异常

当下载网页时可能会出现一些无法控制的错误,下面给出一个更加健硕的版本。

import urllib.requestdef download(url):try:req = urllib.request.Request(url)response = urllib.request.urlopen(req)html = response.read().decode("utf-8")except urllib.request.URLError as e:print("Download error:", e.reason) ## 输出错误原因html = Nonereturn htmlurl = "http://httpstat.us/500"
html = download(url)html = str(html)
html = html.replace("\xa0", " ")
html = html.replace("\xa9", " ")
html.encode("gbk")file_name = 'f:/Python/用Python写网络爬虫/练习/crawling_try.txt'
file_open = open(file_name, "w+")
file_open.write(html)
file_open.close()

程序中url执行的结果是

此时,可以尝试以下方式解决。

重试下载

不是所有的错误都适合重试下载,4 xx 错误发生在请求存在问题时,
而5xx 错误则发生在服务端存在问题时。所以, 我们只需要确保download函数在发生Sxx 错误时重试下载即可。

import urllib.requestdef download(url, num_retries = 2):try:req = urllib.request.Request(url)response = urllib.request.urlopen(req)html = response.read().decode("utf-8")except urllib.request.URLError as e:print("Download error:", e.reason)html = Noneif num_retries > 0:if hasattr(e, 'code') and 500 <= e.code < 600:return download(url, num_retries-1) ## 递归调用return htmlurl = "http://httpstat.us/500"
html = download(url)html = str(html) ## 写入文件必须要求是str类型## 保证不是乱码切格式是美观的
html = html.replace("\xa0", " ")
html = html.replace("\xa9", " ")
html.encode("gbk")## 文件的标准写法
file_name = 'f:/Python/用Python写网络爬虫/练习/crawling_try_again.txt' ## 在这里只写入文件一次,因为重试下载是发生在有问题的时候,一旦恢复正常就不会再重试下载
file_open = open(file_name, "a")
file_open.write(html)
file_open.close()

Python3 爬虫 1 - 下载网页相关推荐

  1. Python3爬虫-01-简单网页爬取

    ''' 宇宙黑客王磊磊 Python3爬虫 简单网页的获取第一个简单的示例 爬去Hades 官网首页 '''import sys import urllib.request print(sys.get ...

  2. python爬取酷狗音乐json数据为空_【Python3爬虫】下载酷狗音乐上的歌曲

    经过测试,可以下载要付费下载的歌曲(n_n) 准备工作:python3.5+pycharm 使用到的库:requests,re,json 步骤: 打开酷狗音乐的官网,输入想要搜索的歌曲(例如<天 ...

  3. 爬虫python下载网站所有图片_Python爬虫之下载网页图片

    传统的方式是在想要的图片上鼠标点击右键另存为,或者用截图的方式保存图片,其实我们还可以通过使用简单的Python语言实现图片的下载并保存到本地,下面让我们看看如何实现吧 一.确定图片的URL地址及获取 ...

  4. 【Python3爬虫】下载酷狗音乐上的歌曲

    经过测试,可以下载要付费下载的歌曲(n_n) 准备工作:Python3.5+Pycharm 使用到的库:requests,re,json,time,fakeuseragent 步骤: 打开酷狗音乐的官 ...

  5. python爬虫获取的网页数据为什么要加[0-python3爬虫爬取网页思路及常见问题(原创)...

    学习爬虫有一段时间了,对遇到的一些问题进行一下总结. 爬虫流程可大致分为:请求网页(request),获取响应(response),解析(parse),保存(save). 下面分别说下这几个过程中可以 ...

  6. Python3.x爬虫下载网页图片

    Python3.x爬虫下载网页图片 一.选取网址进行爬虫 本次我们选取pixabay图片网站 url=https://pixabay.com/ 二.选择图片右键选择查看元素来寻找图片链接的规则 通过查 ...

  7. python3.4.4实现网页爬虫基础之网页下载器三种方法

    这是是慕课网<Python开发简单爬虫>中网页下载器的三种实现方法,课程用的是python2.7,这里用最新的3.4.4实现出来,分享给新人: import urllib.request ...

  8. python3 爬虫五大模块之三:网页下载器

    Python的爬虫框架主要可以分为以下五个部分: 爬虫调度器:用于各个模块之间的通信,可以理解为爬虫的入口与核心(main函数),爬虫的执行策略在此模块进行定义: URL管理器:负责URL的管理,包括 ...

  9. python3多线程第三方库_Python之多线程爬虫抓取网页图片的示例代码

    目标 嗯,我们知道搜索或浏览网站时会有很多精美.漂亮的图片. 我们下载的时候,得鼠标一个个下载,而且还翻页. 那么,有没有一种方法,可以使用非人工方式自动识别并下载图片.美美哒. 那么请使用pytho ...

最新文章

  1. Eclipse上GIT插件EGIT使用手册之八_解决推送冲突
  2. redis入门系列(一)redis安装部署
  3. 计算机能力操作系统试题,全国计算机一级考试操作系统论述题及答案
  4. 默认HotSpot最大直接内存大小
  5. SpringMVC+Json构建基于Restful风格的应用
  6. java 语法 —— 数组
  7. 配置V530交换机步骤
  8. 转!面向对象设计原则
  9. Blueprint:一个让你获取示例代码的Flash Builder扩展
  10. WEBBASE篇: 第六篇, CSS知识4
  11. CentOS 6系统FreeSwitch和RTMP服务 安装及演示(一)
  12. BZOJ35453551[ONTAK2010]Peaks——kruskal重构树+主席树+dfs序+树上倍增
  13. Linux和window写python,搭建Python环境(window和linux)
  14. 毕设-基于SSM高校后勤管理系统
  15. 计算机制作ppt教程,电脑制作ppt详细步骤_新手制作ppt详细步骤图文教程
  16. 线阵相机、镜头及光源的选型
  17. 用php打竖的文字_总结PHP竖排文字的方法
  18. matlab中列主元三角分解法的函数,[数值算法]列主元三角分解法
  19. Python字符串练习
  20. STM32+ESP8266单片机嵌入式物联网教程

热门文章

  1. ZDHC认证辅导,化学品管理部分引入ZDHC网关作为提供MRSL合规性证据的途径
  2. 两端同时写命名管道的测试程序
  3. openssl静态库使用出错undefined reference to `COMP_CTX_new‘
  4. 电影院排片的页面设计
  5. C++用其他符号作为输入间隔
  6. 计算机怎么拼ip,同一台电脑如何设置两个IP地址?电脑配置双ip地址图文教程
  7. 理财入门:复利篇与科学记账法
  8. 三年重砸十亿,统信软件火力全开操作系统生态建设
  9. 什么是骨传导耳机?骨传导耳机对比一般耳机优势在哪?
  10. python一个文本循环输出_Python实现动态循环输出文字功能