【Python爬虫】urllib模块,User-agent

通过 rullib模块 爬取html内容

文章目录

  • (1)urllib模块分类
  • (2)方法使用案例
  • (3)重构User-Agent

(1)urllib模块分类


# urllib.request:请求模块,用于打开和读取 URL;
# urllib.error:异常处理模块,捕获 urllib.error 抛出异常;
# urllib.parse:URL 解析,爬虫程序中用于处理 URL 地址;
# urllib.robotparser:解析 robots.txt 文件,判断目标站点哪些内容可爬,哪些不可以爬,但是用的很少。

(2)方法使用案例

主要方法:
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)

(3)重构User-Agent

  • 为解决网站通过识别 User-Agent 来封杀爬虫程序的问题。需要手工设置user-agent。
    (2)中展示了手动设置User-Agent。

常用浏览器的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)在操作系统 / 程序 / 浏览器 等软件切换


> 文章参考C语言中文网,https://zhuanlan.zhihu.com/p/526574877。

你可能感兴趣的:(python,python,爬虫,开发语言)