爬虫基础

在之前两篇文章中已经为大家介绍了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='+key

2、爬虫的异常处理

在爬虫过程中我们经常会遇到异常情况,若没有异常处理,易产生中断,使后续程序无法运行。在这里为大家简单介绍一下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()

——来自韦玮老师课堂笔记及所悟



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值