注意: IP代理精灵仅提供国内ip网络节点,不提供境外网络节点,不能用于任何非法用途或访问境外封闭网站,不能跨境联网,只能用于合法的国内网络加速。

请登录 注册 实名验证

首页 > 新闻资讯 > 如何使用动态ip爬取豆瓣电影数据?

如何使用动态ip爬取豆瓣电影数据?

来源:IP代理精灵 作者:admin 时间:2020-03-25 17:40:55

如何使用动态ip爬取豆瓣电影数据?学爬虫对一个电影爱好者来说还是挺有用的,如果你常常闹片荒,豆瓣top榜单也拯救不了你,那么就自己动手吧。

如何使用动态ip爬取豆瓣电影数据?

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

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

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

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

(二) 爬虫策略分析:简单来说,有这么几个防止反爬方法:带随机User Agent:最简单,新手也都会设置爬取间隔时间: 简单,但是大大降低效率 带可用cookie:可难可容易找规律,会需要带上一些认证或者解密的数值去计算 使用代理:简单粗暴有效,但是维护代理是个问题 由于单个ip怎么样都会被封,所以我投向了代理的怀抱,常见的有 代理IP 和动态 vps 。爬虫策略大致如下: 三个随机:随机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,爽歪歪~ 用付费 IP代理 的朋友可以参考下我的方法~proxy丰富的话,爬取数据时候可以不需要sleep的,另外用 动态ip 拨号vps也可以达到相同的效果。

(三)代码实现:

爬取过程: 首先找到豆瓣的索引页面,通过查看源代码发现,页面内容是动态显示的。通过谷歌浏览器自带的F12->Network->XHR,找到json的入口。 动态页面有两种解析方式,一种直接用自带的json库,另一种selenium库+Phantom JS来模拟真实浏览器。点开页面,幸好~呼呼,没用加密,直接用json库就可以。 json网址的格式大概是这样的: https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=&start=20&genres=%E5%96%9C%E5%89%A7 通过观察,发现start=用来控制页数,每个页面有20部电影,20一整数一变。每个页面有相关电影名字,链接等。 打开单个电影页面,比如:movie.douban.com/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走向分布式,提高爬虫效率,以及做一些简单的数据分析。推荐阅读:购买动态VPS需要多少钱?

最新资讯

推荐阅读

  1. 06

    2019-08

    性价比高的ip代理软件推荐

    ip代理软件的价格是用户比较看重的,很多时候价格还是决定性的因素,今天就为大家推荐一下性价比高的ip代理软件。1.免费ip代理软件 众所周知,免费代理所提供的IP可用率非常低,没有什么

  2. 22

    2019-04

    使用代理IP失败的可能原因有哪些

    有了代理IP,可以放心的做很多不可描述的事情了,但是有的人使用代理后,发现并没什么用,那可真是悲伤逆流成河。接下来就盘点下使用代理IP失败的可能原因有哪些?这里以浏览器设置代

  3. 29

    2019-05

    IE浏览器上设置代理服务器的方法

    IE如何设置代理服务器呢?当我们需要通过代理才能访问网络时,设置IE代理,可以轻松解决这个问题。这里首先需要说明一下,设置IE代理之后,电脑整个网络都会通过它上网,从而隐藏自己的

  4. 22

    2019-08

    什么是代理IP?有什么功能特点?

    作为一个互联网工作者,在工作中难免碰到一些这样的问题:如果你是一名淘宝店主,你可能会担心刷单太多被发现惨遭封店;如果你是一名网络推广员,你可能会担心发帖太多导致IP地址被屏

  5. 29

    2019-04

    什么是动态代理ip?与普通代理ip有什么区别?

    在区分什么是动态代理ip之前,首先我们要弄清楚,什么是代理IP?就是你在你的浏览器设置选项中(IE/火狐/chrome),手动输入你的代理ip地址。然后用浏览器去搜索,比如说访问百度,在百度

  6. 25

    2019-06

    IP代理工程师:python爬虫被封禁的常见问题有哪些?

    做为python爬虫的一员,你是否遇到过IP地址一直被目标网站封杀却找不到原因?那么这里说几个python爬虫被封禁的常见问题,帮助你诊断一下问题出在哪里?