爬虫基础
2018-03-14 14:49
99 查看
在之前两篇文章中已经为大家介绍了urllib模块的基础知识及使用方法,本次文章将介绍发送请求,爬虫的异常处理和伪装浏览器三个部分的知识。
1、发送请求
以百度检索为例:https://www.baidu.com/s?wd=python&ie=UTF-8
wd=检索内容import urllib.request
keywd='python' #假如我们要检索python
url='http://www.baidu.com/s?wd='+keywd
req=urllib.request.Request(url)
data=urllib.request.urlopen(req).read()
file=open('D:/1python/http模拟.html','wb') #生成一个本地文件
file.write(data) #将爬取的网页写入本地文件
file.close() 如果检索内容为中文,还需进行编码操作key='编程'
key=urllib.request.quote(key) #quote可对中文进行编码
url='http://www.baidu.com/s?wd='+key2、爬虫的异常处理
在爬虫过程中我们经常会遇到异常情况,若没有异常处理,易产生中断,使后续程序无法运行。在这里为大家简单介绍一下HTTPError和URLError:
HTTPError是URLError的子类,我们在进行异常捕捉时只要捕获URLError即可,但URLError是无状态码,无法捕获具体的异常状态,接下来会给大家展示如何对URLError进行处理,使得它可以显示具体的错误内容。
import urllib.error
import urllib.request
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)3、伪装浏览器
在爬虫过程中,若被网站识别出是爬虫程序,有可能会拒绝访问,此时我们需要将自己伪装成浏览器对网站进行访问。import urllib.request
url='http://blog.csdn.net/http://my.csdn.net/weiwei_pig'
#F12 network 刷新 request headers
header=('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36')
opener=urllib.request.build_opener() #添加报头信息
opener.addheaders=[header]
urllib.request.install_opener(opener) #安装为全局,如此下面爬取时会自动加入报头
data=opener.open(url).read()
file=open('D:/1python/1.html','wb')
file.write(data)
file.close()
——来自韦玮老师课堂笔记及所悟
1、发送请求
以百度检索为例:https://www.baidu.com/s?wd=python&ie=UTF-8
wd=检索内容import urllib.request
keywd='python' #假如我们要检索python
url='http://www.baidu.com/s?wd='+keywd
req=urllib.request.Request(url)
data=urllib.request.urlopen(req).read()
file=open('D:/1python/http模拟.html','wb') #生成一个本地文件
file.write(data) #将爬取的网页写入本地文件
file.close() 如果检索内容为中文,还需进行编码操作key='编程'
key=urllib.request.quote(key) #quote可对中文进行编码
url='http://www.baidu.com/s?wd='+key2、爬虫的异常处理
在爬虫过程中我们经常会遇到异常情况,若没有异常处理,易产生中断,使后续程序无法运行。在这里为大家简单介绍一下HTTPError和URLError:
HTTPError是URLError的子类,我们在进行异常捕捉时只要捕获URLError即可,但URLError是无状态码,无法捕获具体的异常状态,接下来会给大家展示如何对URLError进行处理,使得它可以显示具体的错误内容。
import urllib.error
import urllib.request
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)3、伪装浏览器
在爬虫过程中,若被网站识别出是爬虫程序,有可能会拒绝访问,此时我们需要将自己伪装成浏览器对网站进行访问。import urllib.request
url='http://blog.csdn.net/http://my.csdn.net/weiwei_pig'
#F12 network 刷新 request headers
header=('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36')
opener=urllib.request.build_opener() #添加报头信息
opener.addheaders=[header]
urllib.request.install_opener(opener) #安装为全局,如此下面爬取时会自动加入报头
data=opener.open(url).read()
file=open('D:/1python/1.html','wb')
file.write(data)
file.close()
——来自韦玮老师课堂笔记及所悟
相关文章推荐
- Shell 助力开发效率提升
- 十篇笔记走向Python测试开发之路四(字典)
- 十篇python笔记带你走向测试开发之路-第一篇
- mac os 使用pyenv管理python多版本
- Python学习笔记015——序列(字节数组 bytearray)
- 自定义日志
- 日志回滚:python(日志分割)
- python 连接 SAP HANA 数据库
- centos下安装python的过程
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍