知识点:

  1. 熟悉爬虫方法:使用urllib中的request方法实现网页爬取
  2. 通过设置 User-Agent 模拟浏览器,实现初级反爬策略
  3. 从user-agent池中随机选取1个user-agent的方法:random.choice(seq)的巧妙使用

需补充的知识点:

  1. 异常捕获和处理

需拓展的知识点:

  1. 采用 python3的 import requests 模块进行爬取网页的方法掌握
  2. 多进程 / 多线程 / 协程的使用
# -*- coding: utf-8 -*-
"""
Created on Thu Jul 12 19:56:21 2018@author: Administrator
"""# 目标: 使用百度过来的user-agent大全,做一个user-agent池,对新浪的首页发起10次请求,每次发起请求的uers-agent需要随机从池中取出
# NOTES:
# random方法:
# random.choice():   #   choice(seq) method of random.Random instance:#   Choose a random element from a non-empty sequence.from urllib import request
import random
import time# 构造user-agents池
def UAPool():userAgents = ["Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)","Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)","Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)","Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)","Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)","Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)","Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)","Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6","Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1","Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0","Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5","Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20","Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52",]return userAgents# 构造随机选取user-agent的函数
def headersRandom():lists = UAPool()headers = {'User-Agent':random.choice(lists)}       # headers 为dictreturn headers# 构造打印user-agent的函数
def printHeaders():head_name = headersRandom()print(head_name)return# 构造爬取网页的函数: 使用urllib中的request方法
def download(url):headers = headersRandom()response = request.urlopen(request.Request(url, headers=headers)).read().decode('utf-8')return response# 构造main函数
if __name__ == '__main__':# 设置循环爬取的次数times = 10# 循环初始化i= 1    # while loop循环 实现爬取网页和随机选取uesr-agent的功能并输出user-agentwhile i <= times:# 初始化target urlurl = 'https://www.douban.com/'# 执行download函数爬取网页download(url)# 执行完一次后print headersprint('执行第%d次输出的UA:'% i)# 执行printHeaders函数printHeaders()i += 1# 设置随机爬取间断时间clock0 = time.clock()time.sleep(random.random())clock = time.clock() - clock0print('执行时间:',clock)print('\n')

爬虫CASE01:反爬策略之使用随机user-agent模拟浏览器的网页爬取相关推荐

  1. scrapy模拟浏览器翻页爬取智联

    智联爬取中,页码的数字和url是不匹配的,因此盲目的拼接url会造成错误,因此可以采用模拟浏览器爬取网页 要模拟浏览器需要知道scrapy流程,简图如下: 这里只是简单的写一些伪码,设计的数据清洗部分 ...

  2. Python爬虫入门6:模拟浏览器访问网页的http报文体压缩传输

    ☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython ░ 一.引言 在前面章节中介绍了使用urllib包的request模块访问网页的方法.但上节特 ...

  3. java爬虫(一)用selenium驱动IE和谷歌浏览器模拟点击网页

    我们公司的需求总是那么折磨人,最近要做模拟人一步步点击拼多多商品发起支付然后得到最后一步的链接.那么之前学的selenium就派上用场了,在本篇博客我将带大家学会Java爬虫的第一步,用seleniu ...

  4. php爬虫模拟浏览器,PHP模拟浏览器访问,抓取非本地文件的几种方法「爬虫」

    在做一些天气预报或者RSS订阅的程序时,往往需要抓取非本地文件,一般情况下都是利用php模拟浏览器的访问,通过http请求访问url地址, 然后得到html源代码或者xml数据,得到数据我们不能直接输 ...

  5. 爬虫selenium + chrome (PhantomJS)模拟浏览器 抓取京东商城为例

    # /usr/bin/env python # -*- coding: utf-8 -*- # @Time : 18-4-27 下午8:21 # @Author : 杨星星 # @Email : ya ...

  6. 爬虫反爬机制及反爬策略

    参考:https://www.cnblogs.com/LLBFWH/articles/10902533.html 爬虫是一种模拟浏览器对网站发起请求,获取数据的方法.简单的爬虫在抓取网站数据的时候,因 ...

  7. scrapy框架开发爬虫实战——反爬虫策略与反反爬虫策略

    反爬虫.反反爬虫 简单低级的爬虫有一个很大的优点:速度快,伪装度低.如果你爬取的网站没有反爬机制,爬虫们可以非常简单粗暴地快速抓取大量数据,但是这样往往就导致一个问题,因为请求过多,很容易造成服务器过 ...

  8. python爬虫反爬-python爬虫--爬虫与反爬

    爬虫与反爬 爬虫:自动获取网站数据的程序,关键是批量的获取. 反爬虫:使用技术手段防止爬虫程序的方法 误伤:反爬技术将普通用户识别为爬虫,从而限制其访问,如果误伤过高,反爬效果再好也不能使用(例如封i ...

  9. 爬虫入门(一)——静态网页爬取:批量获取高清壁纸

    应老师分的方向,昨天开始自学入门爬虫了 虽然实现了一个比较简单的小爬虫,自己还是非常兴奋的,还是第一次实现  真的好开心 本来想爬pexel上的壁纸,然而发现对方的网页不知道设置了什么,反正有反爬虫机 ...

  10. python爬虫:Selenium模拟浏览器爬取淘宝商品信息

    1.数据提取前期网页分析 分析:淘宝网页数据也是通过Ajax技术获取的,但是淘宝的API接口参数比较复杂,可能包含加密密匙等参数:所以,想要通过自己构造API接口获取完整网页信息很难实现(可能只有部分 ...

最新文章

  1. Java 复制一个文件到另外一个目录下
  2. Virtual Lab. For Probability and Statistics
  3. C# FTP下载文件
  4. Android点击事件之多点触摸与手势识别
  5. 【控制】《多智能体系统一致性协同演化控制理论与技术》纪良浩老师-第7章-二阶时滞多智能体系统分组一致性
  6. postgresql数据库安装以及使用pgadmin连接postgresql数据库
  7. caffe随记(八)---使用caffe训练FCN的pascalcontext-fcn32s模型(pascal-context数据集)
  8. Eclipse中显示文件字符乱码
  9. 我的vscode配置 利用Settings Sync一键安装
  10. 清北学霸的书单居然那么有讲究?看看你比学霸少看了哪些书......
  11. 惠普服务器u盘做win7系统,惠普u盘装win7系统 利用u盘装win7系统
  12. 少儿编程线下培训水到渠成了吗?2018
  13. 03bash特性详解
  14. Maven异常总结001---Maven project导入到myeclipse时候出现异常:could not get mojo execution paramater value
  15. oracle查询耗资源的进程,常用Oracle进程资源查询语句(运维必看)
  16. 在Linux下如何安装Jupyter Notebook
  17. PPAPI nacl_sdk安装
  18. fterm 控制台乱码解决
  19. 学习《华为基本法》(9):预算控制和成本控制
  20. 关于微博营销推广案例

热门文章

  1. 基于 OS X Mavericks 系统
  2. 微型计算机启天m425显卡驱动,Lenovo联想启天M425台式机NVIDIA VGA驱动26.21.14.4223版For Win10-64(2020年4月7日发布)...
  3. GRE蓝宝的核心词汇
  4. Node.js+Express+MongoDB 建站实例
  5. CodeSmith 介绍
  6. Windows设置程序开机自启动的几种方法(整理发布)
  7. 计算机网络管理员高级操作技能考核试卷,计算机网络管理员(高级)操作技能试题样题(2)...
  8. ApacheCN 活动汇总 2019.6.28
  9. ERP是属于系统还是软件?
  10. 惠普m128fn中文说明书_惠普M128fp中文说明书