一、引入拓展库
由于刚刚起步学习爬虫,故从urllib库开始
首先引入urllib,这里主要用到urllib中request类
import urllib.request as ur
二、设置全局参数
我把它分为三个变量:代理服务器IP、目标网址、存放路径。
# 代理服务器的地址 proxy_add = "110.183.238.145:811" # 获取目标网址 url = "https://www.baidu.com" # 设置目标文档(路径+文件名【包括后缀】) aim_file = "E:/workspace/PyCharm/codeSpace/books/python_web_crawler_book/chapter4/demo2/1.html"
三、将爬虫模拟成浏览器访问页面
由于urlopen不支持一些HTTP的高级功能,所以要想达到预期的访问效果,有两种方式。
一是使用build_opener()修改报头,二是使用add_header()添加报头。本人更加倾向于第二种,使用方法如下
# 添加报头 req = ur.Request(url) req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0')
四、设置服务器代理
# 设置代理 proxy = ur.ProxyHandler({'http': proxy_add}) opener = ur.build_opener(proxy, ur.HTTPHandler) ur.install_opener(opener)
五、爬行页面并信息存档
# 读取数据 info = ur.urlopen(req).read() fh = open(aim_file, "wb") # 信息转档 fh.write(info) # 关闭文件 fh.close()
六、源代码:
1 import urllib.request as ur 2 3 # 代理服务器的地址 4 proxy_add = "110.183.238.145:811" 5 # 获取目标网址 6 url = "https://www.baidu.com" 7 # 设置目标文档(路径+文件名【包括后缀】) 8 aim_file = "E:/workspace/PyCharm/codeSpace/books/python_web_crawler_book/chapter4/demo2/1.html" 9 10 # 添加报头 11 req = ur.Request(url) 12 req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0') 13 14 # 设置代理 15 proxy = ur.ProxyHandler({'http': proxy_add}) 16 opener = ur.build_opener(proxy, ur.HTTPHandler) 17 ur.install_opener(opener) 18 19 # 读取数据 20 data = ur.urlopen(req).read() 21 # 文件指向 22 fh = open(aim_file, "wb") 23 # 信息转档 24 fh.write(data) 25 # 关闭文件 26 fh.close()