`
uule
  • 浏览: 6308838 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

Scrapy爬虫:模拟浏览器和使用代理

 
阅读更多

采用settings.py的方式进行设置user agent和proxy列表

http://www.tuicool.com/articles/VRfQR3U

http://jinbitou.net/2016/12/01/2229.html(本人用的这种)

 

网站的反爬虫策略:

http://www.cnblogs.com/tyomcat/p/5447853.html

 

1.在settings.py同级目录下新建文件useragent.py

# -*-coding:utf-8-*-
from scrapy import log
import logging

import random
from scrapy.downloadermiddlewares.useragent import UserAgentMiddleware
class UserAgent(UserAgentMiddleware):

    def __init__(self, user_agent=''):
        self.user_agent = user_agent

    def process_request(self, request, spider):
        ua = random.choice(self.user_agent_list)
        if ua:
            #显示当前使用的useragent
            #print "********Current UserAgent:%s************" %ua
            #记录
            log.msg('Current UserAgent: '+ua, level=logging.DEBUG)
            request.headers.setdefault('User-Agent', ua)

    #the default user_agent_list composes chrome,I E,firefox,Mozilla,opera,netscape
    #for more user agent strings,you can find it in http://www.useragentstring.com/pages/useragentstring.php
    user_agent_list = [\
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 "
        "(KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
        "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 "
        "(KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 "
        "(KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",
        "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 "
        "(KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",
        "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 "
        "(KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",
        "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 "
        "(KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",
        "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 "
        "(KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 "
        "(KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
        "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 "
        "(KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 "
        "(KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
        "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 "
        "(KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 "
        "(KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
        "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 "
        "(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 "
        "(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
        "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 "
        "(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
        "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 "
        "(KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",
        "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 "
        "(KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",
        "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 "
        "(KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
       ]

 

2.在settings.py同级目录新建文件proxymiddlewares.py

# -*- coding: utf-8 -*-
import random, base64


class ProxyMiddleware(object):

    proxyList = [ \
        '121.193.143.249:80','112.126.65.193:80','122.96.59.104:82','115.29.98.139:9999','117.131.216.214:80','116.226.243.166:8118','101.81.22.21:8118','122.96.59.107:843'    
        ]

    def process_request(self, request, spider):
        # Set the location of the proxy
        pro_adr = random.choice(self.proxyList)
        print("USE PROXY -> " + pro_adr)
        request.meta['proxy'] = "http://" + pro_adr

 

3.修改settings.py (注意DOWNLOADER_MIDDLEWARES)

# -*- coding: utf-8 -*-

BOT_NAME = 'ip_proxy_pool'

SPIDER_MODULES = ['ip_proxy_pool.spiders']
NEWSPIDER_MODULE = 'ip_proxy_pool.spiders'

# Obey robots.txt rules
ROBOTSTXT_OBEY = False

ITEM_PIPELINES = {
   'ip_proxy_pool.pipelines.IpProxyPoolPipeline': 300,
}

#爬取间隔
DOWNLOAD_DELAY = 1

# 禁用cookie
COOKIES_ENABLED = False


# 重写默认请求头
DEFAULT_REQUEST_HEADERS = {
  'Accept': 'text/html, application/xhtml+xml, application/xml',
  'Accept-Language': 'zh-CN,zh;q=0.8',
  'Host':'ip84.com',
  'Referer':'http://ip84.com/',
  'X-XHR-Referer':'http://ip84.com/'
}

#激活自定义UserAgent和代理IP
# See http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html
DOWNLOADER_MIDDLEWARES = {
   'ip_proxy_pool.useragent.UserAgent': 1,
   'ip_proxy_pool.proxymiddlewares.ProxyMiddleware':100,
   'scrapy.downloadermiddleware.useragent.UserAgentMiddleware' : None,
}

 

 

4.开始爬取即可

分享到:
评论

相关推荐

    scrapy动态爬虫并存入mysql

    selenium模拟浏览器行为(霸王硬上弓,以后再说) 言归正传,下面介绍一下通过分析页面请求的方法爬取动态加载页面的思路。中心思想就是找到那个发请求的javascript文件所发的请求。 举两个例子,京东评论和上证...

    Python网络爬虫实战.pdf

    本书共8章,涵盖的内容有Python语言的基本语法、Python常用IDE的使用、Python第三方模块的导入使用、Python爬虫常用模块、Scrapy爬虫、Beautiful Soup爬虫、Mechanize模拟浏览器和Selenium模拟浏览器。本书所有源...

    python爬虫实例教程

    本书共8章,涵盖的内容有Python语言的基本语法、Python常用IDE的使用、Python第三方模块的导入使用、Python爬虫常用模块、Scrapy爬虫、Beautiful Soup爬虫、Mechanize模拟浏览器和Selenium模拟浏览器。

    Python3网络爬虫基础+实战案例 Scrapy、Flask、PySpider、Tushare

    使用Selenium模拟浏览器抓取淘宝商品美食信息 使用Redis+Flask维护动态代理池 使用代理处理反爬抓取微信文章 使用Redis+Flask维护动态Cookies池 框架篇 PySpider框架基本使用及抓取TripAdvisor实战 PySpider架构...

    Python网络爬虫实战(完整版,高清

    本书共8章,涵盖的内容有Python语言的基本语法、Python常用IDE的使用、Python第三方模块的导入使用、Python爬虫常用模块、Scrapy爬虫、Beautiful Soup爬虫、Mechanize模拟浏览器和Selenium模拟浏览器。本书所有源...

    PYTHON 网络爬虫实战 ,胡松涛著 ,P294 ,2017.01.zip

    本书共8章,涵盖的内容有Python语言的基本语法、Python常用IDE的使用、Python第三方模块的导入使用、Python爬虫常用模块、Scrapy爬虫、Beautiful Soup爬虫、Mechanize模拟浏览器和Selenium模拟浏览器。本书所有源...

    Python3网络爬虫案例实战课程 视频+文档+源码

    │ 课时16:使用Selenium模拟浏览器抓取淘宝商品美食信息.mp4 │ 课时17:使用Redis+Flask维护动态代理池.mp4 │ 课时18:使用代理处理反爬抓取微信文章.mp4 │ 课时19:使用Redis+Flask维护动态Cookies池.mp4 │ ...

    PYTHON 网络爬虫实战

    本书共8章,涵盖的内容有Python语言的基本语法、Python常用IDE的使用、Python第三方模块的导入使用、Python爬虫常用模块、Scrapy爬虫、Beautiful Soup爬虫、Mechanize模拟浏览器和Selenium模拟浏览器。本书所有源...

    Python网络爬虫实战

    本书共10章,涵盖的内容有Python3.6语言的基本语法、Python常用IDE的使用、Python第三方模块的导入使用、Python爬虫常用模块、Scrapy爬虫、Beautiful Soup爬虫、Mechanize模拟浏览器和Selenium模拟浏览器、Pyspider...

    经典爬虫库(内含超过十种经典爬虫代码)

    Selenium: Selenium 是一个自动化测试工具,可以用于模拟浏览器行为,支持执行 JavaScript 和处理动态网页。对于需要JavaScript渲染的网站,Selenium 是一个强大的选择。 Pyquery: Pyquery 是类似于 jQuery 的库...

    基于selenium模拟天眼查登录并爬取企业工商信息的python爬虫

    此资源仅供学习用途,当前selenium都是基于无头模式的firefox或者chrome等浏览器进行爬虫抓取,天眼查的反爬技术算是很不错的,仅仅用于个人学习用,并不可以进行大数据的爬取 技术: python selenium 爬虫 模拟登陆...

    [2017.02] 精通Python网络爬虫 核心技术、框架与项目实战

    实战维度:以实战为导向,是本书的主旨,除了完全通过手动编程实现网络爬虫和通过Scrapy框架实现网络爬虫的实战案例以外,本书还有博客爬取、图片爬取、模拟登录等多个综合性的网络爬虫实践案例。 作者在Python领域...

    宽带爬虫工具:可以自动实现移动宽带激活动作,快速下载对应软件包,实现自动化激活操作

    宽带爬虫工具是一种用于网络爬虫的软件工具,它可以通过模拟浏览器行为,自动化地访问网站并抓取网页内容。它可以帮助用户快速地获取大量的网页数据,用于数据分析、挖掘和建模等应用。 宽带爬虫工具通常具有以下...

    Python网页爬虫程序框架

    Selenium:Selenium是一个用于自动化浏览器的工具,可以模拟用户在浏览器上的操作,并对动态加载的内容进行抓取。适合处理JavaScript渲染等动态页面。 Celery:Celery是一个分布式任务队列框架,可用于将爬虫任务...

    Python入门网络爬虫之精华版

    首先列举一下本人总结的相关文章,这些覆盖了入门网络爬虫需要的基本概念和技巧:宁哥的小站-网络爬虫 当我们在浏览器中输入一个url后回车,后台会发生什么?比如说你输入http://www.lining0806.com/,你就会看到宁...

    python爬虫教程系列、从0到1学习python爬虫.zip

    包括浏览器抓包,手机APP抓包,如 fiddler、mitmproxy,各种爬虫涉及的模块的使用,如:requests、beautifulSoup、selenium、appium、scrapy等,以及IP代理,验证码识… 爬虫(Web Crawler)是一种自动化程序,用于...

    2023年最新Python爬虫的完整学习框架.pdf

    首先,让我们从最基础的部分开始,python爬虫的原理是模拟浏览器发送请求,通过检索和提取目标网页中的数据。这个过程中,你需要用到实用的python库,比如beautifulsoup、scrapy等,它们可以帮助你高效地处理网络...

    Python 爬虫技术在数据采集中的应用.docx

    爬虫技术是通过模拟浏览器行为,自动化地访问网站并抓取网 页源代码,然后从中提取需要的内容。其原理主要包括以下几个 步骤: 1. 发送 HTTP 请求:根据需要抓取的数据,发送 HTTP 请求到 目标网站。 2. 解析 HTML:...

    爬虫开发的基本流程.doc

    请求可以包含额外的headers等信息,以模拟浏览器行为。发送请求后,等待服务器响应。 获取响应内容: 服务器响应后,会得到一个包含所需数据的Response。这些数据可能是HTML、JSON字符串、二进制数据(如图片、...

    CrawlWeb:Python实现爬虫+辅助案例

    crawl_web_info #一:答题王辅助: 主要功能:知乎答题王等答题游戏的基本辅助...主要功能:模拟浏览器请求知乎并爬取知乎粉丝信息,然后保存到本地文件 #八:爬取百度图片: 主要功能:分页打包百度图片到并保存到本地

Global site tag (gtag.js) - Google Analytics