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

你可能感兴趣的:(python爬虫)