代理ip软件

您的位置: 首页 > 新闻资讯 > 正文

怎样用动态ip抓取豆瓣电影数据

发布时间:2019-05-21 15:24:25 来源:挂机精灵

  作为一个悬疑片爱好者总是无限片荒,泛滥的Top250爬取以及填补不了我饥渴的内心。于是果然地决定:自己动手,爬完豆瓣,丰衣足食。今天就把怎样用动态ip抓取豆瓣电影数据的详细过程告诉大家,仅供参考学习!

1558423739210177.png

  (一)反爬虫策略分析:

  之前其实有搜到过笑虎大大的文章:单机30分钟抓取豆瓣电影7万+数据:论爬虫策略的重要性(附全部数据下载地址),但是发现单ip+随机cookie的方法已经失效了。经过我不断摸索,总结规律如下。

  (1)单个ip不带cookie访问多次,ip不一会被封

  (2)首次访问返回cookie值,带同一个cookie值连续访问,几分钟被封;带不同cookie值访问,大约十分钟之后,IP还是被封了。

  (3)单个ip低速访问(10s以上),不会被封

  (二) 爬虫策略分析:

  简单来说,有这么几个防止反爬方法:

  带随机User Agent:最简单,新手也都会

  设置爬取间隔时间: 简单,但是大大降低效率

  带可用cookie:可难可容易找规律,会需要带上一些认证或者解密的数值去计算

  使用代理:简单粗暴有效,但是维护代理是个问题

  由于单个ip怎么样都会被封,所以我投向了代理的怀抱,常见的有挂机精灵的代理IP。爬虫策略大致如下:

  三个随机:随机UA,随机代理,随机cookie

  网上免费代理一抓一大把,质量低下,不稳定,一开始自己写了个proxypool,来过滤各大网站可能的ip再去爬,好不容易抓到一些能用,过了一会,这些ip又失效,或者又被封。最后遂决定还是得搞个动态的ip池。

  对于使用免费代理:

  可以参考git上的一个开源项目:jhao104/proxy。用了几个类似的,感觉这个是最好的,它主要用flask做了一个api来实时刷新可用ip,不仅可以抓取各大主流免费代理ip,还能定时检验ip的可用性。但是这个项目还是有一个问题,比如当我设定抓取的间隔为10秒之后,执行任务的时间可能大于10s,会报一个warning引发整个程序暂停。

  对于使用付费代理:

  我个人不想再用免费低质的ip,遂买了那种包天的套餐,后来又丑陋地膜改了下这个jhao104/proxy的开源项目,只留下主要api+抓取proxy+数据库的功能,每5秒一刷10个ip,爽歪歪—— 用付费代理的朋友可以参考下我的方法——proxy丰富的话,爬取数据时候可以不需要sleep的,另外用挂机精灵也可以达到相同的效果。

  (三)代码实现:

  爬取过程:

  首先找到豆瓣的索引页面,通过查看源代码发现,页面内容是动态显示的。通过谷歌浏览器自带的F12->Network->XHR,找到json的入口。

  动态页面有两种解析方式,一种直接用自带的json库,另一种selenium库+Phantom JS来模拟真实浏览器。点开页面,幸好——呼呼,没用加密,直接用json库就可以。

  json网址的格式大概是这样的:

  xx/j/new_search_subjects?sort=T&range=0,10&tags=&start=20&genres=%E5%96%9C%E5%89%A7

  通过观察,发现start=用来控制页数,每个页面有20部电影,20一整数一变。每个页面有相关电影名字,链接等。

  打开单个电影页面,比如:xx/subjec。我所爬的信息如图中所示。

  某部最近看了喜欢的电影

  OK,大致思路来了。首先我们获取每个json页面的film信息,当json页面没有返回内容时候,解析停止,再去逐条分析单个电影静态页面的信息,打包入库。

  2. 几个关键点:

  解析方式:选了xpath,效率比某soup高很多,正则解析效率最高,但是开发效率较低(其实是我背不出

  多线程:爬虫算是IO型任务,使用多线程。用的是multiprocessing.dummy,似乎鲜为人知,比threading感觉使用上简单一点,不是很明白两者之间的区别?之后会尝试下和threading比比效率。

  MongoDB: Proxy和电影的信息都存在Mongodb里,其实用redis存proxy更好,但是我不高兴开那么多数据库了,后来发现mongodb似乎各种不稳定……有个topology was detroyed的错误时常发生导致数据库失联,有老铁知道这是为啥嘛?

  爬proxy时间间隔:这个其实还挺重要,因为代理有效时效有限(我买的是保证五分钟),最好的效果应该是代理池里数量稍大于实际用量,也就是假设proxy可用率为50%,5秒用坏一个proxy,五分钟proxy失效,那么大概设定平均略小于2.5秒左右刷新1个proxy比较好。如果proxy在数据库里冗余,大量失效proxy会导致爬虫效率降低。

  (四)成果:

  爬取结果:

  四核开了四线程,爬虫效率大概是十分钟400部左右,所以真的不明白为什么

  @笑虎

  大大可以半小时爬70000部,难道他的mac是100核的?

  总之,大概加起来爬了二十多个小时终于爬完了……成果如下。

  剧情片: 9,843部

  喜剧片: 8,912部

  爱情片: 7,714部

  动作片: 6,065部

  惊悚片: 5,776部

  犯罪片: 4,610部

  恐怖片: 4,113部

  悬疑片: 3,895部

  冒险片: 3,060部

  奇幻片: 2,842部

  科幻片: 2,665部

  战争片: 1,822部

  传记片: 1,531部

  历史片: 1,464部

  音乐片: 1,305部

  同性片: 1,267部

  歌舞片: 924部

  情色片: 517部

  西部片: 407部

  武侠片: 377部

  灾难片: 159部

  2. 查询使用

  数据在Mongodb里,大概是长这样的:

  某个document

  如果想找个电影看看,如:

  评分高于7.5分

  观看人数在1000——20000人之间

  科幻片

  可以写类似的query:

  db.collection.find({'$and': [{'star': {'$gte': 7.5}}, {'pp': {'$gte': 1000, '$lte': 20000}},{'type':re.compile('科幻')}]})

  经过整合,清洗之后,总共有41960 部电影,以json格式从Mongodb里导出

  (五)最后:

  感兴趣的同学可移步我另外一个回答:

  有哪些质量很高的冷门电影?

  下一步会继续研究scrapy+redis+mongodb走向分布式,提高爬虫效率,以及做一些简单的数据分析。

  代理IP是挂机精灵的主打产品之一,该产品的主要特点是可以在服务器上实现在线秒换IP,适合有大量更换IP需求的用户。目前挂机精灵服务器节点已遍布国内数十个地区,总计上千万IP地址供切换使用,该产品适合一切需要大量动态IP地址的领域。挂机精灵是国内专业的IP代理提供商,所有服务器节点均为自营,服务器均采用Intel企业级高速SSD硬盘,读写速度更快,稳定性和速度远远超过其他服务商。


相关资讯

怎样用动态ip抓取豆瓣电影数据

作为一个悬疑片爱好者总是无限片荒,泛滥的Top250爬取以及填补不了我饥渴的内心。于是果然地决定:自己动手,爬完豆瓣,丰衣足食。今天就把怎样用动态ip抓取豆瓣电

来源:挂机精灵

2019-05-21 15:24:25

为何爬虫使用代理IP后依然会抓取不成功?

网络爬虫在如今的互联网领域有着特别的意义,比如我们耳熟能详的大数据,它的发展就离不开网络爬虫。然而网络爬虫也是有天敌的,那就是目标网站的反爬虫策略,爬虫在工作过

来源:挂机精灵

2019-05-06 16:24:05

爬虫使用代理IP后为什么还会抓取失败

网络爬虫在如今的互联网领域有着特别的意义,比如我们耳熟能详的大数据,它的发展就离不开网络爬虫。然而网络爬虫也是有天敌的,那就是目标网站的反爬虫策略,爬虫在工作过

来源:挂机精灵

2019-06-01 14:44:09

爬虫抓取数据为什么要使用代理

爬虫抓取数据为什么要使用代理?大数据时代,我们需要海量的信息去帮助我们分析市场、分析用户,因此在爬虫抓取数据的时候,就容易出现IP受限问题。有的网站也会采取防爬

来源:挂机精灵

2019-06-06 14:41:04

如何使用动态代理IP并开启多线程做数据抓取

如何使用动态代理IP并开启多线程做数据抓取?本文讲解如何在多线程中使用动态代理IP服务。动态代理IP每隔3-5秒会更新一批IP,每秒钟最多请求5次。正因为有这些

来源:挂机精灵

2019-06-11 15:05:15

python使用ip代理抓取网页

当我们抓取网站的一个信息的时候,如果我们访问的时段非常的频繁,很大可能会被被访问的网站检测到从而进行屏蔽,解决这个问题的方法之一就使用代理IP,在我们接入因特网

来源:挂机精灵

2019-06-27 15:39:40

利用挂机宝软件怎么玩游戏赚钱

挂机宝软件怎么玩游戏赚钱?玩游戏除了娱乐之外,也可以赚钱的。稍微热门一些的游戏,都有一些工作室入驻,通过玩游戏来赚钱。想要玩游戏赚钱,那必然是要有自己的优势,比

来源:互联网

2019-02-15 16:52:31

如何高效获取大数据?ip代理:用爬虫!

在不同的操作系统中,Python存在细微的差别,因此有几点您需要牢记在心。这里小编使用的是Python3版本。Python自带一个在终端窗口中运行的解释器,让您

来源:互联网

2019-03-22 16:27:55

挂机精灵代理ip软件解决ip被封

   挂机精灵代理ip软件解决ip被封,现在市面上挂机软件如此之多,该怎么判断这个挂机软件是好用还是不好用呢?我们该如何选择一款适

来源:互联网

2019-02-11 15:16:07

手机电脑怎么使用全国动态IP的方法

  有些需要更换IP的用户,不知道手机电脑怎么使用全国动态IP,其实方法非常简单,下载个挂机精灵代理IP软件即可,比手动拨号更换IP地址方便

来源:互联网

2019-02-18 17:42:49

http代理是怎样爬取数据的

http代理是怎样爬取数据的?http代理存在2种形式,下面为大家简单的介绍一下。第一种为普通代理。这种http代理扮演得是一个中介得角色,对于链接到他的客户端

来源:互联网

2019-04-16 16:18:27

在线客服
大客户VIP渠道2
点击这里给我发消息
讨论QQ群
挂机精灵动态换IP
客服电话
400-998-9776转2