一次用爬虫扒取豆瓣电影条目信息的尝试
2017-05-10 18:11
453 查看
最近做个电影的东西,突发奇想把豆瓣的电影条目扒下来一点,看了下,现在大概有140个左右的条目,这些条目分得比较细,连某个人的电影都分了出来,所以重复的也比较多,当然这些我都还没细弄,只是大致扒了一点,而且因为扒得太快,导致暂时被封ip了。
昨天尝试了很久,本来不登录也能正常扒取电影信息,但是现在不行了,必须要登录。
豆瓣的反扒机制做得很简陋,以至于我成功时候以为就没有反扒机制。
刚开始是直接通过链接来扒取,豆瓣有的网页是返回json字符串,有的是返回整个网页,所以要区分开来。
整个扒取最关键的一点是初次登录时候response的headers里面set-cookie中的“dbcl2”一项,登录豆瓣时候的login返回的headers中set-cookie是有多项的,我没在npm库里面找到有什么好的解析方法,所以这个只能每次扒的时候手动添加,请求时候添加cookie用的是tough-cookie,这个库还是比较好用的,配合request-promise-native很简单,官方也有例子,大致看下就会了。
放一个获取单页20个条目的源代码,tough-cookie官方给的例子我觉得有的地方不太清晰,其实直接按照
这种格式设置就行了,多个就写多行。
代码
昨天尝试了很久,本来不登录也能正常扒取电影信息,但是现在不行了,必须要登录。
豆瓣的反扒机制做得很简陋,以至于我成功时候以为就没有反扒机制。
刚开始是直接通过链接来扒取,豆瓣有的网页是返回json字符串,有的是返回整个网页,所以要区分开来。
整个扒取最关键的一点是初次登录时候response的headers里面set-cookie中的“dbcl2”一项,登录豆瓣时候的login返回的headers中set-cookie是有多项的,我没在npm库里面找到有什么好的解析方法,所以这个只能每次扒的时候手动添加,请求时候添加cookie用的是tough-cookie,这个库还是比较好用的,配合request-promise-native很简单,官方也有例子,大致看下就会了。
放一个获取单页20个条目的源代码,tough-cookie官方给的例子我觉得有的地方不太清晰,其实直接按照
let cookieJar = new request.jar() cookieJar.setCookie('key=value', 'https://movie.douban.com')
这种格式设置就行了,多个就写多行。
代码
let getSinglePage = function (url) { return new Promise((resolve, reject) => { let getPage = function () { let cookieJar = new request.jar() cookieJar.setCookie('dbcl2="你的dbcl2值"', 'https://movie.douban.com') let options = { uri: url, jar: cookieJar, transform: function(body) { console.log('body', body) return cheerio.load(body) } } rp(options).then(($) => { let movieInfos = [] console.log('$', $) $('.nbg').each(function(index, el) { let movieInfo = {} movieInfo.title = $(this).attr('title') movieInfo.url = $(this).attr('href') movieInfo.poster = $(this).find('img').attr('src') movieInfo.rating = $(this).parent().next().find('span[class=rating_nums]').text() movieInfos.push(movieInfo) }); resolve(movieInfos) }).catch((err) => { reject(err) }) } setTimeout(getPage(), 2000) }) }
相关文章推荐
- 一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
- [python爬虫] BeautifulSoup和Selenium对比爬取豆瓣Top250电影信息
- python 爬虫学习三(Scrapy 实战,豆瓣爬取电影信息)
- golang 简单爬虫,245行代码爬取豆瓣电影电视剧等信息并保存到excel
- 爬虫入门:python+pycharm,豆瓣电影信息,短评,分页爬取,mysql数据库连接
- Python爬虫入门2 | 爬取豆瓣电影信息
- 爬虫实战【11】Python获取豆瓣热门电影信息
- Python爬虫学习---------根据分类爬取豆瓣电影的电影信息
- 分布式视频信息爬虫,抓取豆瓣,bilibili等中的电视剧、电影、动漫演员等信息
- Python3.6爬虫爬取豆瓣电影Top250信息
- 用来获取豆瓣网上电影信息的简介
- Scrapy爬虫(4)爬取豆瓣电影Top250图片
- 爬虫小试之一(抓取豆瓣电影)
- 用Scrapy对豆瓣top250进行电影详细信息爬取
- 豆瓣精选话题爬虫数据分析小尝试
- Java豆瓣电影爬虫——减少与数据库交互实现批量插入
- 基于python的豆瓣“我看过的电影”的爬虫
- Python爬虫(三):爬取猫眼电影网经典电影TOP100信息并存入本地Markdown文件(下)
- 运维学python之爬虫高级篇(五)scrapy爬取豆瓣电影TOP250
- Python爬虫小案例:豆瓣电影TOP250