通过 rullib模块 爬取html内容
# urllib.request:请求模块,用于打开和读取 URL;
# urllib.error:异常处理模块,捕获 urllib.error 抛出异常;
# urllib.parse:URL 解析,爬虫程序中用于处理 URL 地址;
# urllib.robotparser:解析 robots.txt 文件,判断目标站点哪些内容可爬,哪些不可以爬,但是用的很少。
主要方法:
urlopen(),
<1> 普通编码方式:
#目的:抓取您想要的网页,并将其保存至本地计算机
#步骤:
from urllib import request,parse
# 拼接 url 地址
url = 'http://www.baidu.com/s?wd={}'
want = input("请输入搜索内容:")
params = parse.quote(want) #quote()实现url编码
full_url = url.format(params)
# 发送请求
#1 重构请求头
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.9200'}
#2 创建请求对象
req = request.Request(url = full_url, headers = headers)
#3 响应对象
res = request.urlopen(req)
#4 获取响应对象内容
html = res.read().decode('utf-8') #read()出的是字节,需要转字符
# 将照片保存至本地
filename = want + '.html'
with open(filename, 'w', encoding='utf-8') as f:
f.write(html)
<2> 函数式编程方式
from urllib import request
from urllib import parse
# 拼接URL地址
def get_url(word):
url = 'http://www.baidu.com/s?{}'
#此处使用urlencode()进行编码
params = parse.urlencode({'wd':word})
url = url.format(params)
return url
发请求,保存本地文件
def request_url(url,filename):
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0'}
# 请求对象 + 响应对象 + 提取内容
req = request.Request(url=url,headers=headers)
res = request.urlopen(req)
html = res.read().decode('utf-8')
# 保存文件至本地
with open(filename,'w',encoding='utf-8') as f:
f.write(html)
# 主程序入口
if __name__ == '__main__':
word = input('请输入搜索内容:')
url = get_url(word)
filename = word + '.html'
request_url(url,filename)
常用浏览器的User-Agent,参考网站http://tools.jb51.net/table/useragent
查看本机浏览器的User-Agent,参考网站:UserAgent查看在线工具
--------------------------------------代理的实现方案---------------------------------------------------------
1)User-Agent 代理池:
在python使用import此模块列表。
使用,可利用random.random(ua_list)随机选取
ua_list = [
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11',
'User-Agent:Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11',
'Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)',
'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',
'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0',
' Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1',
'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1',
' Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
]
2)使用第三方 免费/付费 代理
3)在操作系统 / 程序 / 浏览器 等软件切换