python+rabbitMQ抓取某婚恋网站用户数据

“总是向你索取却不曾说谢谢你~~~~”,在博客园和知乎上面吸收了很多知识,以后也会在这里成长,这里挺好,谢谢博客园和知乎,所以今天也把自己在项目期间做的东西分享一下,希望对朋友们有所帮助。。。。

废话少说,let‘s go~~~~!

需求:

项目需要做一个婚恋网站,主要技术有nginx,服务器集群,redis缓存,mysql主从复制,amoeba读写分离等等,我主要用rabbitMQ+python完成并实现了数据爬取工作(数据库写入及图片下载保存),速度的话公司的电脑爬的(i5+16g&网站需要验证登录),网速给力的话应该可以更快些(我公司的网,我也就不多评价了·······^_^),亲测爬“~车之家”的二手车数据,一个小时15-20W(无登陆,无反扒)。

1.爬虫前你需要了解的:

1)网页的结构:

a.你知道吗,爬这个网站能让你恶心,字段极多,并且男生的页面和女生的页面结够还不一样,所以男女数据所在网页里面的位置也就不一样,标签属性也有不同的地方,所以,我是用 if分开男女去分别爬取的,中间也包含一些数据转换和拆分处理,也有一        些小坑,我在下面的代码里会说

b.网站有反扒技术,之前写了一个爬虫,请求,解析,存取都在一个文件中,当请求过快时会被服务器远程强制断掉,解决的办法是使用代理ip和更换UserAgent,但是有一个bug就是代理爬取的代理ip的可用度极低,导致速度极慢,后来就果断注掉了,发现        是ok的,他的反爬机制没有弄的太明白.

c.模拟登陆:严格说不能算模拟,解决的办法是手动在网页登陆之后,然后把去浏览器中把cookie抓出来,放到headers里面,请求的时候带上cookie,这样就能请求到登陆之后才能抓到的数据了。

d.分析网页,用户的详情页是跟随id在改变的,所以爬取的逻辑是用一个for循环id+请求的连接,还能天然的去重,中间有时会出现未知的错误断掉,大家可以自己在for外面捕获一个异常,然后整个代码装在一个def里,用递归实现一直循环

2)在linux中配置rabbitMQ可以参见我的另外一篇文章:http://www.cnblogs.com/devinCat/articles/7172927.html

3)开发工具:pycharm+python3.6

2.简单的说下MQ在这个任务中的作用:将一个任务纵向拆分成若干块,每一块之间以消息队列为介质进行连接并传送需要的信息,这样让执行不同任务逻辑的的代码可以并行工作,互不影响并且能提高程序运行的效率,消息队列有六个工作模式,这里用到的是work模式,建议百度了解原理,在此不过多阐述。下面我自己画了一张图助于大家理解代码的实现逻辑和过程,希望能帮到大家!(大一点看得比较清楚)

代码放在GitHub里,本人小白,希望大神们多多指点:https://github.com/DevinCat/Cat

后续会把多线程也加进去,不断地优化和改进,虽然辛苦,实现之后还是有一种那叫什么感来着^?_?^,望大家多多指点,欢迎留言交流·····!

时间: 2024-10-24 03:24:10

python+rabbitMQ抓取某婚恋网站用户数据的相关文章

抓取百万知乎用户数据之爬取思路

一.如何获取到用户的信息 前往用户主页,以轮子哥为例 从中可以看到用户的详细信息,教育经历主页,主修.所在行业,公司,关注量,回答数,居住地等等.打开开发者工具栏查看网络,即可找到,一般是html或者json这个数据在Html页面里. URL为https://www.zhihu.com/people/excited-vczh/answers,excited-vczh是轮子哥的id,我们只要拿到某个人的Id就可以获取详细信息了. 二.信息藏在哪 对这个json数据进行解析,即可找到用户信息 根据U

PHP开发:使用PHP抓取百万知乎用户以及知识点札记

代码托管地址:https://github.com/hhqcontinue/zhihuSpider 开发前的准备 安装Linux系统(Ubuntu14.04),在VMWare虚拟机下安装一个Ubuntu: 安装PHP5.6或以上版本: 安装curl.pcntl扩展. 使用PHP的curl扩展抓取页面数据 PHP的curl扩展是PHP支持的允许你与各种服务器使用各种类型的协议进行连接和通信的库. 本程序是抓取知乎的用户数据,要能访问用户个人页面,需要用户登录后的才能访问.当我们在浏览器的页面中点击

Hawk: 20分钟无编程抓取大众点评17万数据

1. 主角出场:Hawk介绍 Hawk是沙漠之鹰开发的一款数据抓取和清洗工具,目前已经在Github开源.详细介绍可参考:http://www.cnblogs.com/buptzym/p/5454190.html,强烈建议先读这篇文章,该文介绍了详细原理和抓取链家二手房的攻略,以此为基础,才能较好的理解整个操作. 本文将讲解通过本软件,获取大众点评的所有美食数据,可选择任一城市,也可以很方便地修改成获取其他生活门类信息的爬虫. 本文将省略原理,一步步地介绍如何在20分钟内完成爬虫的设计,基本不需

python 爬虫抓取心得

quanwei9958 转自 python 爬虫抓取心得分享 urllib.quote('要编码的字符串') 如果你要在url请求里面放入中文,对相应的中文进行编码的话,可以用: urllib.quote('要编码的字符串') query = urllib.quote(singername) url = 'http://music.baidu.com/search?key='+query response = urllib.urlopen(url) text = response.read()

[Python爬虫] 之十三:Selenium +phantomjs抓取活动树会议活动数据

抓取活动树网站中会议活动数据(http://www.huodongshu.com/html/index.html) 具体的思路是[Python爬虫] 之十一中抓取活动行网站的类似,都是用多线程来抓取,但是由于活动树网站 ,每个关键字搜索页的ur是固定,比如搜索“数字”结果有470个结果,没页10条记录,第二页的url和第一页的 url是一样的. 因此针对每个关键字用一个线程进行搜索. 具体代码如下: # coding=utf-8import osimport refrom selenium im

python 爬虫抓取心得分享

/** author: insun title:python 爬虫抓取心得分享 blog:http://yxmhero1989.blog.163.com/blog/static/112157956201311821444664/ **/    0x1.urllib.quote('要编码的字符串') 如果你要在url请求里面放入中文,对相应的中文进行编码的话,可以用: urllib.quote('要编码的字符串') query = urllib.quote(singername) url = 'h

浅谈如何使用python抓取网页中的动态数据

我们经常会发现网页中的许多数据并不是写死在HTML中的,而是通过js动态载入的.所以也就引出了什么是动态数据的概念, 动态数据在这里指的是网页中由Javascript动态生成的页面内容,是在页面加载到浏览器后动态生成的,而之前并没有的. 在编写爬虫进行网页数据抓取的时候,经常会遇到这种需要动态加载数据的HTML网页,如果还是直接从网页上抓取那么将无法获得任何数据. 今天,我们就在这里简单聊一聊如何用python来抓取页面中的JS动态加载的数据. 给出一个网页:豆瓣电影排行榜,其中的所有电影信息都

python Web抓取(一)

需要的模块: python web抓取通过: webbrowser:是python自带的,打开浏览器获取指定页面 requests:从因特网上下载文件和网页 Beautiful Soup:解析HTML Selenium:启动并控制一个Web浏览器.selenium能够填写表单,并模拟鼠标在这个浏览器中点击   >>>这个在这里 一.项目:利用Webbrowser模块的快速翻译脚本  webbrowser.open(url) 会在默认浏览器中打开这个地址 >>> impo

使用python+phantomjs抓取动态页面

前一段时间公司需要爬取部分web页面的数据使用.但是页面中的主要数据是ajax load出来的,传统的抓取方法是拿不到数据的.后来在网上发现了phantomjs,在无界面的情况下运行js,渲染dom.用这个工具抓取ajax load出来的数据再方便不过啦. 系统环境:CentOS release 6.5 (Final) phantomjs版本:1.9.8 phantomjs抓取加载完整的dom结构.说到phantomjs怎么把数据传递给处理程序,我看到网上很多人是写一个本地文件,然后具体的处理程