Python爬虫从入门到懵逼-0

初识Python2.7 urllib库

1.实现简单网页爬取,并将网页HTML写到本地磁盘

  • 首先,爬取百度首页(http://www.baidu.com)将内容读取出来付给一个变量
  • 以写入的方式打开一个本地文件,命名为*.html格式
    -关闭该文件

*read() 读取文件的全部内容
readline()读取文件的一行
readlines()将读到的内容赋给一个列表变量*

#--coding:utf-8--
import urllib2
url='http://www.baidu.com'
file = urllib2.urlopen(url)
data = file.read()

out_put_stream = open("D:\\img\\crawlers/baidu_homepage.html", 'wb')
out_put_stream.write(data)
out_put_stream.close()
Python3可以用ulrlib.request.utlretrieve(url,path)直接实现不过要记得urlcleanup()清楚urlretrieve()的缓存

上述代码中file可以调用 info() getcode() geturl()得到相应信息

当爬取的网页URL中包含中文字符的时候需要进行编码处理在Python2中用urllib2.quote()进行编码 ,urllib2.unquote()解码

2.模拟浏览器访问

有些网站做了反爬处理 禁止爬虫访问 这时需要模拟浏览器进行爬取
模拟浏览器的方法是设置Headers中的User-Agent属性

User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3141.7 Safari/537.36


具体实现:
  1. 用build_opener()修改报头
    由于urlopen()不支持HTTP的高级功能 所以需要修改报头
#--coding:utf-8--
import urllib2
url="http://blog.csdn.net/weiwei_pig/article/details/51178226"
headers=('User-Agent',"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3141.7 Safari/537.36")
opener=urllib2.build_opener()
#注意这里opener给add_handler赋值的方式   一个列表  不是函数调用
opener.add_handler=[headers]
infomation=opener.open(url).read()
print infomation
  1. Python3.x中可以用urllib.request.Request(url).add_header(‘User-Agent’,”xx”) 注意这里add_header()是函数调用

3.设置超时时间

有时候服务器响应很慢,可以设置超时时间,超过超时时间还没有响应就判断为网页无法打开
具体实现: urlopen(url,timeout=1) timeout的单位是秒
#--coding:utf-8--
import urllib2
ileageURL=   urllib2.quote("http://yum.iqianyue.com")
print ileageURL
sinaURL= urllib2.unquote(ileageURL)

for i in range(1,100):
    try:
        file = urllib2.urlopen(sinaURL,timeout=1)
        data = file.read()
        print len(data)
    except Exception as e:
        print ("出现异常--"+str(e))

14165
14165
14165
14165
出现异常 urlopen error timed out
14165

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值