澳门美高梅手机网站Dubbo入门实例(二)

咱们注意图被三个红框的信:

Dubbo安装

下载地址:https://github.com/alibaba/dubbo/releases

pom.xml:http://files.cnblogs.com/files/belen/pom.xml

multiprocessing是Python自带的一个多进程模块,在此我们采取该Pool方法。

目录结构

由此eclipse创建maven项目dubboserver,结构如下:

 澳门美高梅手机网站 1

# coding:utf-8

import requests
from bs4 import BeautifulSoup
from multiprocessing import Pool

def get_zhaopin(page):
    url = 'http://sou.zhaopin.com/jobs/searchresult.ashx?jl=全国&kw=python&p={0}&kt=3'.format(page)
    print("第{0}页".format(page))
    wbdata = requests.get(url).content
    soup = BeautifulSoup(wbdata,'lxml')

    job_name = soup.select("table.newlist > tr > td.zwmc > div > a")
    salarys = soup.select("table.newlist > tr > td.zwyx")
    locations = soup.select("table.newlist > tr > td.gzdd")
    times = soup.select("table.newlist > tr > td.gxsj > span")

    for name, salary, location, time in zip(job_name, salarys, locations, times):
        data = {
            'name': name.get_text(),
            'salary': salary.get_text(),
            'location': location.get_text(),
            'time': time.get_text(),
        }
        print(data)

if __name__ == '__main__':
    pool = Pool(processes=2)
    pool.map_async(get_zhaopin,range(1,pages+1))
    pool.close()
    pool.join()

集成Spring

applicationContext.xml:

http://files.cnblogs.com/files/belen/applicationContext.xml

 

from multiprocessing import Pool

Zookeeper(注册中心)

Pom.xml

         <dependency>

                   <groupId>org.apache.zookeeper</groupId>

                   <artifactId>zookeeper</artifactId>

                   <version>3.4.6</version>

         </dependency>

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源之落实,是Hadoop和Hbase的重大器件。

实例中,zookeeper将当dubbo服务的报中心。同时肩负集群调度。

http://sou.zhaopin.com/jobs/searchresult.ashx?jl=全国&kw=python&kt=3&p=2

Consumer

  1. 追寻结果的url结构;(构造url地址进行for循环遍历)
  2. 寻结果的条数;(判断url的数码)
  3. 集的音信的主心骨;(解析数据)

安装

用war包拷贝到tomcat/webapps目录下,启动tomcat。浏览器中输入:

http://localhost:8080/dubbo/

澳门美高梅手机网站 2

默认用户称与密码:root,root.可以由此/web-inf/dubbo.properties修改用户名和密码。

 澳门美高梅手机网站 3

经过筛选url参数,我们规定了要爬取的基本URL为:

集成Spring

applicationContext.xml:

http://files.cnblogs.com/files/belen/applicationProvider.xml

其中

启动方法

ClassPathXmlApplicationContext context = new
ClassPathXmlApplicationContext(

                                     new String[] {
“applicationProvider.xml” });

context.start();

如此这般,在爬虫中动用多进程展开并发爬取就作定矣,更多高档、复杂强大的法,还伸手各位参考其他文档资料。

目录结构

经过eclipse创建maven项目dubboclient,结构如下:

 澳门美高梅手机网站 4

  1. 实例化一个进程池,设置过程也2;
  2. 调用进程池的map_async()方法,接收一个函数(爬虫函数)和一个列表(url列表)

调用方式

流入spring后,通过ApplicationContext获取相应服务接口,调用服务措施。

http://sou.zhaopin.com/jobs/searchresult.ashx
为请求地址和目录

zookeeper安装

参照下同样篇博文:

http://www.cnblogs.com/belen/p/4804063.html

咱们好窥见,除了页数会转变外,其余的参数值都是永恒的价。我们来确定一下搜索结果的究竟页数。
坐网页上闹提示一共发稍许个职位满足条件,我们以总职位数除为单页显示的位置数即可知道找结果的页数。

何以而就此zookeeper?

Zookeeper可以提供配置管理、命名服务、分布式算法、集群管理作用。具体说明参看如下文章:

http://zhidao.baidu.com/question/919262980452730419.html?fr=iks&word=zookeeper+dubbo+%B9%D8%CF%B5&ie=gbk

if __name__ == '__main__':
    pool = Pool(processes=2)
    pool.map_async(get_zhaopin,range(1,pages+1))
    pool.close()
    pool.join()

下载

官网下载地址:

http://code.alibabatech.com/mvn/releases/com/alibaba/dubbo-admin/2.4.1/dubbo-admin-2.4.1.war

但该地方最近径直无法下载。

http://download.csdn.net/detail/liweifengwf/7784901足通过此处下载。

jl:工作地方参数
kw:搜索的机要字
kt:以职务名搜索
p:页数

Provider

事先文章中所介绍的爬虫都是针对性单个URL进行辨析及爬取,url数量少不费时,但是一旦我们用爬取的网页url有为数不少或者另行多,那怎么收拾?
应用for循环对负有的url进行遍历访问?
哦,想法深好,但是要url过多,爬取完所有的数会不见面极其过度耗时了?
对是我们好运用并作来对URL进行走访为爬取数据。
诚如而言,在单机上我们利用三栽并发方式:

实例启动顺序

1、  启动zookeeper,参看下一样首博文

 澳门美高梅手机网站 5

http://www.cnblogs.com/belen/articles/4804063.html

2、  启动Consumer

凡是以初始化spring的应用达到下文。

3、  客户端调用服务

 澳门美高梅手机网站 6

对此上述三种植方式的现实概念解释和证明,各位可自行网上寻找了解,相信会较自己说得知道,所以于斯便怪它们进行解释说明了。
按系列澳门美高梅手机网站文章有有限单至关重要,一个凡是实战,一个凡入门,既为实战,理论性的东西便讲述得比少;既为入门,所讲述的都是大概好懂易操作的东西,高深的艺还请求入门后自行探索,那样呢会成长得又快。
那么下,开始连发爬取的实战入门,以差不多进程也例,并发爬取智联招聘的招聘信息。
** 一、分析URL和页面结构**
1、搜索全国范围外岗位名包含“Python”的职位招聘
咱们不分职业门类、不分开行业类别,工作地点选择为全国,职位名也“Python”,对招聘信息进行搜寻,结果一旦下图:

Dubbo伪集群(单zookeeper)

单机服务器下模拟Dubbo集群,通过反复运作main函数,启动多个劳务。本实例将起动三单服务器。为了区别客户端调用的是谁服务,将劳动接口返回值做片组别:

服务1返回hello1 tom

服务2返回hello2 tom

服务3返回hello3 tom

除此以外三单服务对外暴露的端口也做出调整(spring配置文件):

服务1端口为:2090

服务2端口为:2089

服务3端口为:2088

客户端随机调用服务接口10软,输出如下结果:

 澳门美高梅手机网站 7

用服务1休运作,客户端随机调用服务接口10糟,输出如下结果:

 澳门美高梅手机网站 8

输出结果表明,dubbo集群有负载均衡和灾备功能(failover)。使用zk实现

相关文章:
Python爬虫实战入帮派一:工具准备
Python爬虫实战入帮派二:从一个略的HTTP请求开始
Python爬虫实战入帮派三:简单的HTML解析——爬取腾讯新闻
Python爬虫实战入帮派四:使用Cookie模拟登录——获取电子书下充斥链接
Python爬虫实战入门五:获取JS动态内容—爬取今日条漫长
Python爬虫实战入门六:提高爬虫效率—并发爬取智联招聘
Python爬虫入门实战七:使用Selenium–以抓取QQ空间好友说说乎例
Python爬虫入帮派实战八:数据存储——MongoDB与MySQL

Dubbo控制台

地方内容看起没那么直观。如果发生一个操高来治本及表现哪怕尽强了。不得不说dubbo还是老亲近的。

以除去以了大半进程之外,其他的代码和前面文章介绍的方式大同小异,所以在这个单介绍一下多进程的主导代码:

# coding:utf-8

import requests
from bs4 import BeautifulSoup
import re

url = 'http://sou.zhaopin.com/jobs/searchresult.ashx?jl=全国&kw=python&p=1&kt=3'
wbdata = requests.get(url).content
soup = BeautifulSoup(wbdata, 'lxml')

items = soup.select("div#newlist_list_content_table > table")
count = len(items) - 1
# 每页职位信息数量
print(count)

job_count = re.findall(r"共<em>(.*?)</em>个职位满足条件", str(soup))[0]
# 搜索结果页数
pages = (int(job_count) // count) + 1
print(pages)

结果返回每页60漫漫位置信息,一共发14页。
那么我们的待爬取的url地址便有14单,url地址被参数p的价值分别从1顶14,这么少的url,使用for循环也堪迅速成功,但于这我们利用多进程展开现身说法。
次、在爬虫中采用多进程
先期上代码:

  • 多线程(threading)
  • 多进程(multiprocessing)
  • 协程(gevent)

结果如下:

文章首发个人博客:http://zmister.com/

发表评论

电子邮件地址不会被公开。 必填项已用*标注