采用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.开始爬取即可
相关推荐
Selenium:一个自动化浏览器的工具,用于模拟用户行为和爬取数据。 文档和教程: Scrapy官方文档:提供了Scrapy框架的详细文档和示例代码。 Python爬虫教程:是一个在线教程,涵盖了Python爬虫的基本概念和实践。 ...
提高Scrapy爬虫爬取速度的方法有很多,比如优化请求策略(如延迟请求、并发请求)、使用分布式爬虫(如Scrapy-Redis)、设置下载中间件来处理反爬机制、或者利用缓存减少重复请求。同时,理解网站的反爬策略并适当地...
- **Selenium**:在模拟登录时,我们使用Selenium库,这是一个自动化测试工具,可以模拟浏览器行为。在Scrapy中,我们可以通过Selenium来执行JavaScript,处理验证码、动态加载内容以及填写表单等任务。对于知乎...
Scrapyd是Scrapy的一个扩展,它提供了一个服务,可以部署和管理Scrapy爬虫项目。通过Scrapyd API,我们可以远程调度爬虫运行,获取爬虫结果,这在分布式爬虫或需要定时任务的场景中尤其有用。 以下是如何使用这些...
Scrapy具有强大的中间件系统,可以方便地定制爬取行为,如处理cookies、重试失败的请求、模拟浏览器行为等。同时,Scrapy内置了对XPath和CSS选择器的支持,便于提取网页数据。 二、Scrapy分布式爬虫原理 Scrapy...
6. **Downloader Middleware**:下载中间件是一系列钩子,可以修改Scrapy的下载过程,例如处理cookies、模拟浏览器行为或处理重定向。 7. **Spider Middleware**:蜘蛛中间件位于Spider和Scrapy引擎之间,可以对...
本项目是关于使用Scrapy爬虫框架抓取今日头条网站上与特定关键词相关的新闻信息和内容页面。Scrapy是一个强大的Python爬虫框架,适用于构建复杂的爬虫项目,能够高效地处理网络请求、解析HTML内容以及管理爬取的数据...
Selenium是一个浏览器自动化工具,可以直接模拟浏览器行为;Splash是Scrapy推荐的一个轻量级HTTP服务器,它可以执行JavaScript并返回渲染后的HTML,适合与Scrapy配合使用。通过这些工具,我们可以抓取到那些依赖...
【标题】:“豆瓣scrapy爬虫”是指使用Python的Scrapy框架开发的,用于抓取豆瓣网站上Top50电影数据的爬虫程序。Scrapy是一个强大的、高效的爬虫框架,专为网络抓取和数据提取设计,适用于各种规模的项目。 【描述...
2. **使用Scrapy中间件**:Scrapy的中间件可以拦截和修改爬虫的请求和响应。对于Ajax加载的数据,我们可以编写一个中间件来模拟这些请求,发送到服务器并接收返回的数据。 3. **解析HTML和Json数据**:Ajax请求通常...
同时,持续关注网络爬虫的发展,学习新的库和技术,如Selenium用于处理动态加载的内容,或使用Puppeteer(Python的headless Chrome库如SeleniumWire)来模拟浏览器行为,都是提高爬虫能力的有效途径。
10-Scrapy爬虫框架和11-Scrapy爬虫基本使用中,你将学习如何搭建Scrapy工程,创建Spider,配置中间件和管道(Pipelines)。Scrapy的项目结构清晰,如`items.py`定义爬取的数据模型,`middlewares.py`自定义中间件,`...
1. **动态加载**:许多网页内容是通过JavaScript动态加载的,需要使用如Selenium或Scrapy的Splash中间件来模拟浏览器执行JavaScript。 2. **反爬策略**:网易云音乐可能会有反爬机制,如IP限制、User-Agent检测等,...
总的来说,通过Scrapy框架,我们可以有效地解决Python爬虫的各种挑战,无论是处理动态加载的页面,还是模拟浏览器行为,都可以在遵循最佳实践的同时,高效地抓取和分析网络数据。这些技能在数据分析、市场研究、内容...
### scrapy爬虫教程知识点解析 #### 一、Scrapy概览与入门 ##### 1.1 Scrapy简介 - **定义**: Scrapy是一款用于爬取网站并从页面中提取结构化数据的应用框架,广泛应用于数据挖掘、信息处理或历史归档等领域。 - *...
【标题】"bili_danmu_爬虫_CRAWL_scrapy_" 指的是一个使用Scrapy框架编写的爬虫程序,其主要任务是抓取B站...通过理解以上知识点,我们可以构建一个能够从B站抓取弹幕信息的Scrapy爬虫,从而获取有价值的用户行为数据。
6. **Middleware**:Middleware是Scrapy框架中处理Request和Response的组件,可以用来实现自定义的请求和响应处理,如模拟浏览器行为、设置代理、处理cookies、管理session等。 7. **Settings**:Scrapy设置允许你...
8. 高级爬虫技术:讲述如何使用代理、设置延时、模拟浏览器行为等技术进行复杂的爬取。 9. 实战项目:通过构建一个或多个实际的爬虫项目来巩固前面学习的知识。 10. 爬虫框架:介绍Scrapy等流行的Python爬虫框架,...
Scrapy是一个强大的Python爬虫框架,它简化了网络数据抓取和处理的过程。在本教程中,我们将深入探讨如何使用Scrapy创建一个...通过理解这些核心组件和配置,你可以轻松地开始Scrapy爬虫项目并实现自己的数据抓取需求。
使用Python爬虫库,如Requests和Scrapy,可以模拟浏览器请求,获取到浏览器的Cookie。 三、Python爬虫获取Cookie的实现 使用Python爬虫库获取Cookie需要使用CookieJar对象,下面是一个简单的示例代码: ``` ...