2017.08.10 Python爬虫实战之爬虫攻防

1.创建一般的爬虫:一般来说,小于100次访问的爬虫都无须为此担心

(1)以爬取美剧天堂为例,来源网页:http://www.meijutt.com/new100.html,项目准备:

scrapy startproject meiju100

F:\Python\PythonWebScraping\PythonScrapyProject>cd meiju100

F:\Python\PythonWebScraping\PythonScrapyProject\meiju100>scrapy genspider meiju100Spider meijutt.com

项目文件结构:

(2)修改items.py文件:

(3)修改meiju100Spider.py文件:

先检查网页源代码:发现<div class="lasted-num fn-left">开头的标签,包含所需数据:

# -*- coding: utf-8 -*-import scrapyfrom meiju100.items import Meiju100Item

class Meiju100spiderSpider(scrapy.Spider):    name = ‘meiju100Spider‘    allowed_domains = [‘meijutt.com‘]    start_urls = (        ‘http://www.meijutt.com/new100.html‘    )

def parse(self, response):        subSelector=response.xpath(‘//li/div[@class="lasted-num fn-left"]‘)        items=[]        for sub in subSelector:            item=Meiju100Item()            item[‘storyName‘]=sub.xpath(‘../h5/a/text()‘).extract()[0]            item[‘storyState‘]=sub.xpath(‘../span[@class="state1 new100state1"]/text()‘).extract()[0]            item[‘tvStation‘]=sub.xpath(‘../span[@class="mjtv"]/text()‘).extract()            item[‘updateTime‘]=sub.xpath(‘//div[@class="lasted-time new100time fn-right"]/text()‘).extract()[0]   //运行报错:IndexError: list index out of range,<div class="lasted-time new100time fn-right">不属于上边的父节点            items.append(item)

return items

(4)编写pipelinses.py文件,保存爬取的数据到文件夹:

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

# Define your item pipelines here## Don‘t forget to add your pipeline to the ITEM_PIPELINES setting# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.htmlimport time

class Meiju100Pipeline(object):    def process_item(self, item, spider):        today=time.strftime(‘%Y%m%d‘,time.localtime())        fileName=today+‘meiju.txt‘        with open(fileName,‘a‘) as fp:            fp.write("%s \t" %(item[‘storyName‘].encode(‘utf8‘)))            fp.write("%s \t" %(item[‘storyState‘].encode(‘utf8‘)))            if len(item[‘tvStation‘])==0:                fp.write("unknow \t")            else:                fp.write("%s \t" %(item[‘tvStation‘][0]).encode(‘utf8‘))            fp.write("%s \n" %(item[‘updateTime‘].encode(‘utf8‘)))

return item

(5)修改settings.py文件:

(6)在meiju项目下任意目录下,运行命令:scrapy crawl meiju100Spider

运行结果:

2.封锁间隔时间破解:Scrapy在两次请求之间的时间设置DOWNLOAD_DELAY,如果不考虑反爬虫的因素,这个值当然是越小越好,

如果把DOWNLOAD_DELAY的值设置为0.1,也就是每0.1秒向网站请求一次网页。

所以,需要在settings.py的尾部追加这一项即可:

3.封锁Cookies破解:总所周知,网站是通过Cookies来确定用户身份的,Scrapy爬虫在爬取数据时使用同一个Cookies发送请求,这种做法和把DOWNLOAD_DELAY设置为0.1没什么区别。

所以,要破解这种原理的反爬虫也很简单,直接禁用Cookies就可以了,在Setting.py文件后追加一项:

				
时间: 2024-08-28 17:32:20

2017.08.10 Python爬虫实战之爬虫攻防的相关文章

2017.08.10 Python爬虫实战之爬虫攻防篇

1.封锁user-agent破解: user-agent是浏览器的身份标识,网站就是通过user-agent来确定浏览器类型的.有很多网站会拒绝不符合一定标准的user-agent请求网页,如果网站将频繁访问网站的user-agent作为爬虫的标志,然后加入黑名单该怎么办? (1)首先在meiju项目下,settings.py的同级目录创建middlewares目录,进入middlewares目录,创建__init__.py,将middlewares目录变成一个Python模块 (2)创建资源文

2017马哥python高级实战班培训推荐

2017马哥python高级实战班,培训推荐的优惠渠道 链接地址: http://blog.sina.com.cn/s/blog_1706603600102wxm6.html

爬虫实战:爬虫之 web 自动化终极杀手 ( 上)

欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:陈象 导语: 最近写了好几个简单的爬虫,踩了好几个深坑,在这里总结一下,给大家在编写爬虫时候能给点思路.本次爬虫内容有:静态页面的爬取.动态页面的爬取.web自动化终极爬虫. 分析: 数据获取(主要靠爬虫) 静态网页爬取 动态网页爬取 数据存储(python excel存储) Python Excel操作,保存结果 数据获取实战: 百度音乐(静态网页) 分析步骤1 . 打开百度音乐:http://music.baidu.com/

2017.08.05 Python网络爬虫实战之获取代理

1.项目准备:爬取网站:http://www.proxy360.cn/Region/China,http://www.xicidaili.com/ 2.创建编辑Scrapy爬虫: scrapy startproject getProxy scrapy genspider proxy360Spider proxy360.cn 项目目录结构: 3.修改items.py: 4.修改Spider.py文件 proxy360Spider.py: (1)先使用scrapy shell命令查看一下连接网络返回

2017.08.04 Python网络爬虫之Scrapy爬虫实战二 天气预报的数据存储问题

1.数据存储到JSon:程序阅读一般都是使用更方便的Json或者cvs等待格式,继续讲解Scrapy爬虫的保存方式,也就是继续对pipelines.py文件动手脚 (1)创建pipelines2json.py文件: import timeimport jsonimport codecs class WeatherPipeline(object): def process_item(self, item, spider): today=time.strftime('%Y%m%d',time.loc

2017.08.11 Python网络爬虫实战之Beautiful Soup爬虫

1.与Scrapy不同的是Beautiful Soup并不是一个框架,而是一个模块:与Scrapy相比,bs4中间多了一道解析的过程(Scrapy是URL返回什么数据,程序就接受什么数据进行过滤),bs4则在接收数据和进行过滤之间多了一个解析的过程,根据解析器的不同,最终处理的数据也有所不同,加上这一步骤的优点是可以根据输入数据的不同进行针对性的解析:同一选择lxml解析器: 2.安装Beautiful Soup环境:pip install beautifulsoup4 3.Beautiful

2017.08.04 Python网络爬虫之Scrapy爬虫实战二 天气预报

1.项目准备:网站地址:http://quanzhou.tianqi.com/ 2.创建编辑Scrapy爬虫: scrapy startproject weather scrapy genspider HQUSpider quanzhou.tianqi.com 项目文件结构如图: 3.修改Items.py: 4.修改Spider文件HQUSpider.py: (1)先使用命令:scrapy shell http://quanzhou.tianqi.com/   测试和获取选择器: (2)试验选择

2017.08.17 Python爬虫实战之BS4获取起点小说信息

1.目标分析: (1)打开起点中文网,搜索所有完本小说: 原始的网址是这样的:http://a.qidian.com/?action=1&orderId=&page=1&style=1&pageSize=2&siteid=4&hiddenField=3 界面是这样的: 修改网址中的参数,观察不同效果: 再修改参数style试试: (2)查看页面源代码: 2.项目实施: (1)创建远程数据库以及表: CREATE TABLE `qiDianBooks` ( `

python应用之爬虫实战1 爬虫基本原理

知识内容: 1.爬虫是什么 2.爬虫的基本流程 3.request和response 4.python爬虫工具 参考:http://www.cnblogs.com/linhaifeng/articles/7773496.html 一.爬虫是什么 1.爬虫定义 爬虫:把互联网比作一张大的蜘蛛网,那一台计算机上的数据便是蜘蛛网上的一个猎物,而爬虫程序就是一只小蜘蛛,沿着蜘蛛网抓取自己想要的猎物/数据,  爬虫实质是向网站发起请求,获取资源后分析并提取有用数据的程序  2.爬虫分类 定向:爬取特定领域