使用代理IP防止帐号被封

网络caobaiyi 发表了文章 • 0 个评论 • 4 次浏览 • 2019-05-19 14:33 • 来自相关话题

越来越多的人已经学会使用了网络,它已经成为了我们生活中不可替代的工具。所以现在就出现了很多IP限制变严格的情况,如果使用了很久的帐号被封,是会造成很大损失的。
使用代理IP就可以防止自己的帐号被封,那么,如何使用代理IP防止帐号被封呢?
大家在平时接触到容易被封帐号的平台一般有贴吧、论坛、社交软件等。一般是当系统检测异常操作后,被封的几率高达百分之八十,还有可能是其他用户举报投诉。当注册了一个帐号后,大量的添加好友、发消息,或者立即切换其他帐号登录,就很容易被封。要预防帐号被封,就需要正常使用证号,操作起来比较麻烦。例如,每次切换帐号的时候需要更换IP地址,然后清理浏览器的缓存,或者更换设备,操作行为也要多加注意。
但防止帐号被封就是比较困难的,所以即使使用了代理IP软件防封,也要多注意操作行为。新注册的帐号可以多注意,合理控制使用度。


文章出自:http://www.c2c3.com 查看全部
越来越多的人已经学会使用了网络,它已经成为了我们生活中不可替代的工具。所以现在就出现了很多IP限制变严格的情况,如果使用了很久的帐号被封,是会造成很大损失的。
使用代理IP就可以防止自己的帐号被封,那么,如何使用代理IP防止帐号被封呢?
大家在平时接触到容易被封帐号的平台一般有贴吧、论坛、社交软件等。一般是当系统检测异常操作后,被封的几率高达百分之八十,还有可能是其他用户举报投诉。当注册了一个帐号后,大量的添加好友、发消息,或者立即切换其他帐号登录,就很容易被封。要预防帐号被封,就需要正常使用证号,操作起来比较麻烦。例如,每次切换帐号的时候需要更换IP地址,然后清理浏览器的缓存,或者更换设备,操作行为也要多加注意。
但防止帐号被封就是比较困难的,所以即使使用了代理IP软件防封,也要多注意操作行为。新注册的帐号可以多注意,合理控制使用度。


文章出自:http://www.c2c3.com

什么代理IP的成本最低?

网络caobaiyi 发表了文章 • 0 个评论 • 4 次浏览 • 2019-05-19 14:32 • 来自相关话题

我们现代的生活已经离不开互联网,互联网公司收集大数据进行分析,建立自己的数据库,这也产生了无数的数据收集公司,这就是我们平时所说的网络爬虫或网络治住。网络爬虫在收集数据的过程中,需要大量的代理IP才能完成。那么,什么代理IP的成本最低呢?
很多人在看到这个问题的时候都会第一想到肯定是免费代理IP成本最低,其实不然,下面为大家分析一下。
目前,代理IP有免费版本和付费版本。很多人都会认为免费代理IP成本最低,毕竟不需要花钱。但是很多免费代理IP提供的IP根本无法使用,耽误了很多时间。如果偶尔需要使用代理IP,可以尝试免费代理IP。如果需要每天大量使用,不如就选择一个好一些的代理IP软件。
闪云代理就是不错的选择,拥有海量IP,使用过程稳定,操作简单方便,更能保证个人信息安全。



文章出自:http://www.c2c3.com 查看全部
我们现代的生活已经离不开互联网,互联网公司收集大数据进行分析,建立自己的数据库,这也产生了无数的数据收集公司,这就是我们平时所说的网络爬虫或网络治住。网络爬虫在收集数据的过程中,需要大量的代理IP才能完成。那么,什么代理IP的成本最低呢?
很多人在看到这个问题的时候都会第一想到肯定是免费代理IP成本最低,其实不然,下面为大家分析一下。
目前,代理IP有免费版本和付费版本。很多人都会认为免费代理IP成本最低,毕竟不需要花钱。但是很多免费代理IP提供的IP根本无法使用,耽误了很多时间。如果偶尔需要使用代理IP,可以尝试免费代理IP。如果需要每天大量使用,不如就选择一个好一些的代理IP软件。
闪云代理就是不错的选择,拥有海量IP,使用过程稳定,操作简单方便,更能保证个人信息安全。



文章出自:http://www.c2c3.com

如何判断代理IP的匿名程度

网络caobaiyi 发表了文章 • 0 个评论 • 4 次浏览 • 2019-05-19 14:31 • 来自相关话题

我们在使用代理IP的时候,一般都要使用高度匿名,不然使用效果不好。但现在市场上很多代理IP都是混合的,特别是免费代理IP,都到达不到高度匿名。那么,我们要怎么判断代理IP的匿名程度?
如何判断代理IP的匿名程度
我们在判断匿名程度的时候,可以直接访问http://httpbin.org/ip则会给网址。如果使用的是透明代理IP,返回网页显示的是本机IP。如果使用的是普通匿名代理IP,访问这个网址的时候显示的内容会是代理IP地址和本机IP。如果使用的高级匿名代理IP,网页显示的内容就只有代理IP的地址了,将自己真是的IP完全隐藏。
上面为大家介绍了判断代理IP匿名程度的小方法,大家不妨尝试使用下。闪云代理IP质量高,操作简单,是您不错的选择。



文章出自:http://www.c2c3.com 查看全部
我们在使用代理IP的时候,一般都要使用高度匿名,不然使用效果不好。但现在市场上很多代理IP都是混合的,特别是免费代理IP,都到达不到高度匿名。那么,我们要怎么判断代理IP的匿名程度?
如何判断代理IP的匿名程度
我们在判断匿名程度的时候,可以直接访问http://httpbin.org/ip则会给网址。如果使用的是透明代理IP,返回网页显示的是本机IP。如果使用的是普通匿名代理IP,访问这个网址的时候显示的内容会是代理IP地址和本机IP。如果使用的高级匿名代理IP,网页显示的内容就只有代理IP的地址了,将自己真是的IP完全隐藏。
上面为大家介绍了判断代理IP匿名程度的小方法,大家不妨尝试使用下。闪云代理IP质量高,操作简单,是您不错的选择。



文章出自:http://www.c2c3.com

爬虫工作如何选择代理IP类型

网络caobaiyi 发表了文章 • 0 个评论 • 3 次浏览 • 2019-05-19 14:31 • 来自相关话题

之前为大家介绍过代理IP的类型分别是透明代理IP、匿名代理IP、高匿名代理IP、混淆代理IP。那么,爬虫工作如何选择代理IP类型?
普通的匿名代理IP是能对客户机器的真是IP进行隐藏,但是也会改变我们的请求信息,服务器端也有可能会认为我们使用了代理。不过使这种类型代理的时候,虽然被访问的网站不知道客户端的IP,但是可以知道你使用了代理。但是有一些可以侦测IP的网页是可以查到真实客户端IP的。
再来说说高度匿名代理IP,使用这种方式的代理IP时,请添加链接描述是不会改变客户机的请求,这样在服务器看来就像是真正的客户在浏览访问它。客户的真是IP是可以隐藏的,服务器也不会认为我们使用了代理。
如果是爬虫程序需要使用代理IP的时候,要选择高匿名代理。此外,要保证数据不被代理服务器发现,推荐使用HTTPS协议的代理。


文章出自:http://www.c2c3.com 查看全部
之前为大家介绍过代理IP的类型分别是透明代理IP、匿名代理IP、高匿名代理IP、混淆代理IP。那么,爬虫工作如何选择代理IP类型?
普通的匿名代理IP是能对客户机器的真是IP进行隐藏,但是也会改变我们的请求信息,服务器端也有可能会认为我们使用了代理。不过使这种类型代理的时候,虽然被访问的网站不知道客户端的IP,但是可以知道你使用了代理。但是有一些可以侦测IP的网页是可以查到真实客户端IP的。
再来说说高度匿名代理IP,使用这种方式的代理IP时,请添加链接描述是不会改变客户机的请求,这样在服务器看来就像是真正的客户在浏览访问它。客户的真是IP是可以隐藏的,服务器也不会认为我们使用了代理。
如果是爬虫程序需要使用代理IP的时候,要选择高匿名代理。此外,要保证数据不被代理服务器发现,推荐使用HTTPS协议的代理。


文章出自:http://www.c2c3.com

运用代理IP获取信息

网络caobaiyi 发表了文章 • 0 个评论 • 4 次浏览 • 2019-05-19 14:31 • 来自相关话题

现在的代理IP在我们的生活中十分常见,特别是互联网工作者中。使用带来IP来获取信息,这是爬虫工作的最常用方法,因为获取的信息较多,所以需要用代理IP来解决IP数量的限制。此外,代理IP还可以在共享网络的时候起到保护作用,增强了我们局域网的安全。
运用代理IP获取信息
使用代理IP还可以防止攻击。现在的网络发达,但漏洞也很多,甚至我们使用的一些软件都会泄露我们的位置信息。使用代理IP可以隐藏我们的IP地址,避免黑客的攻击。
除此之外,IP代理可以提升我们的访问速度,突破网络中的很多障碍,快速完成电脑的指令。
现如今,运用代理IP获取信息已经是非常常见了,很多业务都离不开它,例如刷单、刷数据、网络营销或者数据采集。闪云代理就是代理IP的不错选择,海量IP供您使用,简单操作更安全。


文章出自:http://www.c2c3.com 查看全部
现在的代理IP在我们的生活中十分常见,特别是互联网工作者中。使用带来IP来获取信息,这是爬虫工作的最常用方法,因为获取的信息较多,所以需要用代理IP来解决IP数量的限制。此外,代理IP还可以在共享网络的时候起到保护作用,增强了我们局域网的安全。
运用代理IP获取信息
使用代理IP还可以防止攻击。现在的网络发达,但漏洞也很多,甚至我们使用的一些软件都会泄露我们的位置信息。使用代理IP可以隐藏我们的IP地址,避免黑客的攻击。
除此之外,IP代理可以提升我们的访问速度,突破网络中的很多障碍,快速完成电脑的指令。
现如今,运用代理IP获取信息已经是非常常见了,很多业务都离不开它,例如刷单、刷数据、网络营销或者数据采集。闪云代理就是代理IP的不错选择,海量IP供您使用,简单操作更安全。


文章出自:http://www.c2c3.com

隐藏信息的好帮手—代理IP

网络caobaiyi 发表了文章 • 0 个评论 • 4 次浏览 • 2019-05-19 14:30 • 来自相关话题

在互联网的使用中,如果大家想匿名或者隐藏自己的信息,保护信息不被泄露,可以使用代理IP。
在上网的时候,电脑使用公共IP地址,可以确定相关计算机的很多数据,IP还能用来跟踪浏览过的网站信息。如果不希望被别人看到数据,就可以隐藏自己的真实IP。
如果想访问国外网站或者观看视频的时候,使用我们正常IP是无法浏览的。使用代理IP就可以隐藏自己的真实IP,使用那个地区的IP,超越地理位置的限制,自然就能正常访问了。
想隐藏自己的信息,选择一个代理IP就可以了。代理IP分为免费与收费,如果使用次数较少,只是偶尔使用,可以使用免费代理,但免费代理使用起来比较麻烦,成功率也较低。一般付费的代理IP使用起来都很方便,大家可以根据自己的使用情况来选择。


文章出自:http://www.c2c3.com 查看全部
在互联网的使用中,如果大家想匿名或者隐藏自己的信息,保护信息不被泄露,可以使用代理IP。
在上网的时候,电脑使用公共IP地址,可以确定相关计算机的很多数据,IP还能用来跟踪浏览过的网站信息。如果不希望被别人看到数据,就可以隐藏自己的真实IP。
如果想访问国外网站或者观看视频的时候,使用我们正常IP是无法浏览的。使用代理IP就可以隐藏自己的真实IP,使用那个地区的IP,超越地理位置的限制,自然就能正常访问了。
想隐藏自己的信息,选择一个代理IP就可以了。代理IP分为免费与收费,如果使用次数较少,只是偶尔使用,可以使用免费代理,但免费代理使用起来比较麻烦,成功率也较低。一般付费的代理IP使用起来都很方便,大家可以根据自己的使用情况来选择。


文章出自:http://www.c2c3.com

爬虫工作如何选择代理IP类型

回复

网络caobaiyi 发起了问题 • 1 人关注 • 0 个回复 • 12 次浏览 • 2019-05-18 16:17 • 来自相关话题

HTTP代理IP怎么使用?

网络caobaiyi 发表了文章 • 0 个评论 • 10 次浏览 • 2019-05-18 16:12 • 来自相关话题

随着互联网的进入到我们的生活与工作,越来越多的人了解到了HTTP代理IP。通过换IP的方法解脱了换IP的限制,提高了工作效率。HTTP代理IP还可以隐藏自己的真是IP,HTTP代理IP的使用范围越来越广泛。那么,相信还有很多人不知道HTTP代理IP怎么使用,下面就为大家进行简单的介绍。
1.网络爬虫。网络爬虫如果想在最短的时间内采集到大量的信息,为了避免防爬技术的拦截,就需要配合使用HTTP代理IP。网络爬虫一般是程序化的接入,使用API直接接入HTPP代理IP即可。
2.直接使用。打开Internet选项,在局域网的设置中,找到代理服务器勾选“为LAN使用代理服务器”,将IP地址何对应的端口号填写好后,保存刷新浏览器IP就变更好了。这种方法适合效果补量业务,可以解决网站的IP地址限制问题。
以上就是使用HTTP代理IP的方法了,大家可以尝试使用哦。闪云代理是HTTP代理IP的不错选择,稳定的IP使用,方便快捷的使用方法,欢迎大家试用。

文章出自:http://www.c2c3.com 查看全部
随着互联网的进入到我们的生活与工作,越来越多的人了解到了HTTP代理IP。通过换IP的方法解脱了换IP的限制,提高了工作效率。HTTP代理IP还可以隐藏自己的真是IP,HTTP代理IP的使用范围越来越广泛。那么,相信还有很多人不知道HTTP代理IP怎么使用,下面就为大家进行简单的介绍。
1.网络爬虫。网络爬虫如果想在最短的时间内采集到大量的信息,为了避免防爬技术的拦截,就需要配合使用HTTP代理IP。网络爬虫一般是程序化的接入,使用API直接接入HTPP代理IP即可。
2.直接使用。打开Internet选项,在局域网的设置中,找到代理服务器勾选“为LAN使用代理服务器”,将IP地址何对应的端口号填写好后,保存刷新浏览器IP就变更好了。这种方法适合效果补量业务,可以解决网站的IP地址限制问题。
以上就是使用HTTP代理IP的方法了,大家可以尝试使用哦。闪云代理是HTTP代理IP的不错选择,稳定的IP使用,方便快捷的使用方法,欢迎大家试用。

文章出自:http://www.c2c3.com

怎么设置代理IP来隐藏自己的IP

网络caobaiyi 发表了文章 • 0 个评论 • 7 次浏览 • 2019-05-18 16:11 • 来自相关话题

在上网的时候,很多人都发现了,如果我们近期经常浏览某个产品,搜索引擎就会自动推荐类似的产品给你。其实就是我们在线活动可以通过各种网站,搜索引擎和社交网络可以跟踪。
怎么设置代理IP来隐藏自己的IP
有很多方法可以隐藏我们的网络连接,保证在线时保持匿名。那么,该如何设置呢。
有很多网站,例如免费的“网络代理服务器”就可以隐藏身份。只需要把网络地址更改为代理服务器,然后从Web浏览网站就可以了。
代理IP软件就是隐藏IP地址的好方法,高匿名代理为您获取信息,而且不会被别人发现,更好的保护隐私。但还会有很多网络浏览习惯信息存储在计算机上,可以通过网络查看,这时候在搜索引擎中设置不保存历史记录。
上面介绍了如何隐藏自己的真是IP,我们还可以按照上面的方法来进行隐私保护,做好措施,才能保障我们的隐私不被泄露。
 
文章出自:http://www.c2c3.com/ 查看全部
在上网的时候,很多人都发现了,如果我们近期经常浏览某个产品,搜索引擎就会自动推荐类似的产品给你。其实就是我们在线活动可以通过各种网站,搜索引擎和社交网络可以跟踪。
怎么设置代理IP来隐藏自己的IP
有很多方法可以隐藏我们的网络连接,保证在线时保持匿名。那么,该如何设置呢。
有很多网站,例如免费的“网络代理服务器”就可以隐藏身份。只需要把网络地址更改为代理服务器,然后从Web浏览网站就可以了。
代理IP软件就是隐藏IP地址的好方法,高匿名代理为您获取信息,而且不会被别人发现,更好的保护隐私。但还会有很多网络浏览习惯信息存储在计算机上,可以通过网络查看,这时候在搜索引擎中设置不保存历史记录。
上面介绍了如何隐藏自己的真是IP,我们还可以按照上面的方法来进行隐私保护,做好措施,才能保障我们的隐私不被泄露。
 
文章出自:http://www.c2c3.com/

代理IP有什么用处

网络caobaiyi 发表了文章 • 0 个评论 • 8 次浏览 • 2019-05-18 16:10 • 来自相关话题

      在我们的现代生活中,衣食住行都离不开网络。在我们正常使用网络的过程中,每台电脑都会有一个IP地址,主要是用来确定电脑的位置,同时也是这台电脑在互联网中的标识,毕竟每天都会又不计其数的电脑对主机进行连接,总是要进行区分的。那么我们能否对使用的IP地址进行更改呢?答案是可以的,使用我们的代理IP就可以对固定的IP进行更换。很多人都听说过代理IP,但不太了解其用途,现在就给大家讲解一下代理IP有什么用处。





代理IP有什么用处
      1.加快访问的速度。通常的代理服务器都是有缓冲功能的,有很大的存储空间,当网络出现拥堵的时候,或者系统出现故障,都可以通过代理服务器来访问此网站,不仅节约了宽带,还能有效的提高访问速度和效率。
      
2.网络爬虫的采集。当在进行网络爬虫对网络数据进行抓取时,我们使用的IP是非常容易被封的,使用代理IP后,就可以让网络爬虫假装自己的真是IP,我们自己的真是IP就不会被封掉了。
代理IP有很多用处与好处,那么我们该如何挑选代理IP软件呢?闪云代理就是不错的选择,每天有海量IP,连接稳定,高达98%以上的可用率,还在犹豫的小伙伴可以免费使用哦!

文章出自:http://www.c2c3.com 查看全部
      在我们的现代生活中,衣食住行都离不开网络。在我们正常使用网络的过程中,每台电脑都会有一个IP地址,主要是用来确定电脑的位置,同时也是这台电脑在互联网中的标识,毕竟每天都会又不计其数的电脑对主机进行连接,总是要进行区分的。那么我们能否对使用的IP地址进行更改呢?答案是可以的,使用我们的代理IP就可以对固定的IP进行更换。很多人都听说过代理IP,但不太了解其用途,现在就给大家讲解一下代理IP有什么用处。

业务场景.jpg

代理IP有什么用处
      1.加快访问的速度。通常的代理服务器都是有缓冲功能的,有很大的存储空间,当网络出现拥堵的时候,或者系统出现故障,都可以通过代理服务器来访问此网站,不仅节约了宽带,还能有效的提高访问速度和效率。
      
2.网络爬虫的采集。当在进行网络爬虫对网络数据进行抓取时,我们使用的IP是非常容易被封的,使用代理IP后,就可以让网络爬虫假装自己的真是IP,我们自己的真是IP就不会被封掉了。
代理IP有很多用处与好处,那么我们该如何挑选代理IP软件呢?闪云代理就是不错的选择,每天有海量IP,连接稳定,高达98%以上的可用率,还在犹豫的小伙伴可以免费使用哦!

文章出自:http://www.c2c3.com

关于懒人听书爬虫的请教

python爬虫李魔佛 回复了问题 • 2 人关注 • 1 个回复 • 491 次浏览 • 2019-05-17 21:45 • 来自相关话题

requests直接post图片文件

python爬虫李魔佛 发表了文章 • 0 个评论 • 25 次浏览 • 2019-05-17 16:32 • 来自相关话题

代码如下:
file_path=r'9927_15562445086485238.png'
file=open(file_path, 'rb').read()
r=requests.post(url=code_url,data=file)
print(r.text) 查看全部
代码如下:
    file_path=r'9927_15562445086485238.png'
file=open(file_path, 'rb').read()
r=requests.post(url=code_url,data=file)
print(r.text)

怎样找到需要代理IP的客户

回复

网络caobaiyi 发起了问题 • 1 人关注 • 0 个回复 • 25 次浏览 • 2019-05-16 18:39 • 来自相关话题

python的mixin类

python李魔佛 发表了文章 • 0 个评论 • 46 次浏览 • 2019-05-16 16:30 • 来自相关话题

A mixin is a limited form of multiple inheritance.
 
maxin类似多重继承的一种限制形式:
 关于Python的Mixin模式

像C或C++这类语言都支持多重继承,一个子类可以有多个父类,这样的设计常被人诟病。因为继承应该是个”is-a”关系。比如轿车类继承交通工具类,因为轿车是一个(“is-a”)交通工具。一个物品不可能是多种不同的东西,因此就不应该存在多重继承。不过有没有这种情况,一个类的确是需要继承多个类呢?

答案是有,我们还是拿交通工具来举例子,民航飞机是一种交通工具,对于土豪们来说直升机也是一种交通工具。对于这两种交通工具,它们都有一个功能是飞行,但是轿车没有。所以,我们不可能将飞行功能写在交通工具这个父类中。但是如果民航飞机和直升机都各自写自己的飞行方法,又违背了代码尽可能重用的原则(如果以后飞行工具越来越多,那会出现许多重复代码)。怎么办,那就只好让这两种飞机同时继承交通工具以及飞行器两个父类,这样就出现了多重继承。这时又违背了继承必须是”is-a”关系。这个难题该怎么破?

不同的语言给出了不同的方法,让我们先来看下Java。Java提供了接口interface功能,来实现多重继承:public abstract class Vehicle {
}

public interface Flyable {
public void fly();
}

public class FlyableImpl implements Flyable {
public void fly() {
System.out.println("I am flying");
}
}

public class Airplane extends Vehicle implements Flyable {
private flyable;

public Airplane() {
flyable = new FlyableImpl();
}

public void fly() {
flyable.fly();
}
}

现在我们的飞机同时具有了交通工具及飞行器两种属性,而且我们不需要重写飞行器中的飞行方法,同时我们没有破坏单一继承的原则。飞机就是一种交通工具,可飞行的能力是是飞机的属性,通过继承接口来获取。

回到主题,Python语言可没有接口功能,但是它可以多重继承。那Python是不是就该用多重继承来实现呢?是,也不是。说是,因为从语法上看,的确是通过多重继承实现的。说不是,因为它的继承依然遵守”is-a”关系,从含义上看依然遵循单继承的原则。这个怎么理解呢?我们还是看例子吧。
class Vehicle(object):
pass

class PlaneMixin(object):
def fly(self):
print 'I am flying'

class Airplane(Vehicle, PlaneMixin):
pass

可以看到,上面的Airplane类实现了多继承,不过它继承的第二个类我们起名为PlaneMixin,而不是Plane,这个并不影响功能,但是会告诉后来读代码的人,这个类是一个Mixin类。所以从含义上理解,Airplane只是一个Vehicle,不是一个Plane。这个Mixin,表示混入(mix-in),它告诉别人,这个类是作为功能添加到子类中,而不是作为父类,它的作用同Java中的接口。

使用Mixin类实现多重继承要非常小心
首先它必须表示某一种功能,而不是某个物品,如同Java中的Runnable,Callable等
 
其次它必须责任单一,如果有多个功能,那就写多个Mixin类然后,它不依赖于子类的实现最后,子类即便没有继承这个Mixin类,也照样可以工作,就是缺少了某个功能。(比如飞机照样可以载客,就是不能飞了^_^) 查看全部
A mixin is a limited form of multiple inheritance.
 
maxin类似多重继承的一种限制形式:
 关于Python的Mixin模式

像C或C++这类语言都支持多重继承,一个子类可以有多个父类,这样的设计常被人诟病。因为继承应该是个”is-a”关系。比如轿车类继承交通工具类,因为轿车是一个(“is-a”)交通工具。一个物品不可能是多种不同的东西,因此就不应该存在多重继承。不过有没有这种情况,一个类的确是需要继承多个类呢?

答案是有,我们还是拿交通工具来举例子,民航飞机是一种交通工具,对于土豪们来说直升机也是一种交通工具。对于这两种交通工具,它们都有一个功能是飞行,但是轿车没有。所以,我们不可能将飞行功能写在交通工具这个父类中。但是如果民航飞机和直升机都各自写自己的飞行方法,又违背了代码尽可能重用的原则(如果以后飞行工具越来越多,那会出现许多重复代码)。怎么办,那就只好让这两种飞机同时继承交通工具以及飞行器两个父类,这样就出现了多重继承。这时又违背了继承必须是”is-a”关系。这个难题该怎么破?

不同的语言给出了不同的方法,让我们先来看下Java。Java提供了接口interface功能,来实现多重继承:
public abstract class Vehicle {
}

public interface Flyable {
public void fly();
}

public class FlyableImpl implements Flyable {
public void fly() {
System.out.println("I am flying");
}
}

public class Airplane extends Vehicle implements Flyable {
private flyable;

public Airplane() {
flyable = new FlyableImpl();
}

public void fly() {
flyable.fly();
}
}


现在我们的飞机同时具有了交通工具及飞行器两种属性,而且我们不需要重写飞行器中的飞行方法,同时我们没有破坏单一继承的原则。飞机就是一种交通工具,可飞行的能力是是飞机的属性,通过继承接口来获取。

回到主题,Python语言可没有接口功能,但是它可以多重继承。那Python是不是就该用多重继承来实现呢?是,也不是。说是,因为从语法上看,的确是通过多重继承实现的。说不是,因为它的继承依然遵守”is-a”关系,从含义上看依然遵循单继承的原则。这个怎么理解呢?我们还是看例子吧。
class Vehicle(object):
pass

class PlaneMixin(object):
def fly(self):
print 'I am flying'

class Airplane(Vehicle, PlaneMixin):
pass


可以看到,上面的Airplane类实现了多继承,不过它继承的第二个类我们起名为PlaneMixin,而不是Plane,这个并不影响功能,但是会告诉后来读代码的人,这个类是一个Mixin类。所以从含义上理解,Airplane只是一个Vehicle,不是一个Plane。这个Mixin,表示混入(mix-in),它告诉别人,这个类是作为功能添加到子类中,而不是作为父类,它的作用同Java中的接口。

使用Mixin类实现多重继承要非常小心
  • 首先它必须表示某一种功能,而不是某个物品,如同Java中的Runnable,Callable等

 
  • 其次它必须责任单一,如果有多个功能,那就写多个Mixin类
  • 然后,它不依赖于子类的实现
  • 最后,子类即便没有继承这个Mixin类,也照样可以工作,就是缺少了某个功能。(比如飞机照样可以载客,就是不能飞了^_^)

代理IP软件对于电商工作的作用

网络caobaiyi 发表了文章 • 0 个评论 • 34 次浏览 • 2019-05-15 10:38 • 来自相关话题

       代理IP软件对于电商工作的作用有哪些?我们现在的生活中,网络的发展速度是非常迅速的,所以有很多企业是依靠网络发展也更加壮大。现在电商的出现,方便了我们的生活。所以也有越来越多电商如雨后春笋般出现,成为了一种专业的行业,而且获取的利益也是非常可观的。但是这种特殊的行业,是如何找到自己的客源呢?
代理IP软件对于电商工作的作用
      我们就拿现在风靡朋友圈的微商行业来说,即使是规模非常大的微商企业,传统的实体店固定客流量是不能满足他们要求的。因此他们就会用其他方法来增加自己的客源。
      代理IP软件在他们寻找客源的过程中就有非常重要的作用,很多有所了解的人都知道,微商是通过网络交流平台来寻找客人的。例如贴吧、微博这些当下流行的软件。因此微商就需要大量的发帖,但百度的固定规定是一个IP地址发多种广告性质的帖子时,帖子就会被删除,甚至还有IP地址被封的可能性。所以更换IP软件的出现就解决了很多这种客户的燃眉之急。代理IP价格低廉,还能满足很多电商的需求,自然会受到电商公司的欢迎。
      这就是代理IP软件对于电商工作的作用,如果要寻找换IP的软件,闪云代理就是不错的选择,非常适合电商用户使用,不论是刷单还是刷流量,或者其他需要更换IP的工作,都是支持使用的。 查看全部
       代理IP软件对于电商工作的作用有哪些?我们现在的生活中,网络的发展速度是非常迅速的,所以有很多企业是依靠网络发展也更加壮大。现在电商的出现,方便了我们的生活。所以也有越来越多电商如雨后春笋般出现,成为了一种专业的行业,而且获取的利益也是非常可观的。但是这种特殊的行业,是如何找到自己的客源呢?
代理IP软件对于电商工作的作用
      我们就拿现在风靡朋友圈的微商行业来说,即使是规模非常大的微商企业,传统的实体店固定客流量是不能满足他们要求的。因此他们就会用其他方法来增加自己的客源。
      代理IP软件在他们寻找客源的过程中就有非常重要的作用,很多有所了解的人都知道,微商是通过网络交流平台来寻找客人的。例如贴吧、微博这些当下流行的软件。因此微商就需要大量的发帖,但百度的固定规定是一个IP地址发多种广告性质的帖子时,帖子就会被删除,甚至还有IP地址被封的可能性。所以更换IP软件的出现就解决了很多这种客户的燃眉之急。代理IP价格低廉,还能满足很多电商的需求,自然会受到电商公司的欢迎。
      这就是代理IP软件对于电商工作的作用,如果要寻找换IP的软件,闪云代理就是不错的选择,非常适合电商用户使用,不论是刷单还是刷流量,或者其他需要更换IP的工作,都是支持使用的。

截止今天(2019-05-14)银行股今年的涨幅排名

股票李魔佛 发表了文章 • 0 个评论 • 51 次浏览 • 2019-05-14 23:59 • 来自相关话题

今年涨幅最少的是农业银行,最多的是新股 西安银行。 ticker secShortName secFullName y_chgPct
31 601288 农业银行 中国农业银行股份有限公司 -0.341178
11 600015 华夏银行 华夏银行股份有限公司 1.856174
45 601988 中国银行 中国银行股份有限公司 2.248533
32 601328 交通银行 交通银行股份有限公司 3.532657
30 601229 上海银行 上海银行股份有限公司 3.725781
35 601398 工商银行 中国工商银行股份有限公司 4.771403
40 601818 光大银行 中国光大银行股份有限公司 5.643119
27 601169 北京银行 北京银行股份有限公司 6.205580
14 600016 民生银行 中国民生银行股份有限公司 7.092815
5 002936 郑州银行 郑州银行股份有限公司 7.551112
49 601998 中信银行 中信银行股份有限公司 8.181956
43 601939 建设银行 中国建设银行股份有限公司 9.402651
41 601838 成都银行 成都银行股份有限公司 9.424554
52 603323 苏农银行 江苏苏州农村商业银行股份有限公司 12.375732
20 600926 杭州银行 杭州银行股份有限公司 12.933645
8 600000 浦发银行 上海浦东发展银行股份有限公司 14.752244
39 601577 长沙银行 长沙银行股份有限公司 14.792683
18 600908 无锡银行 无锡农村商业银行股份有限公司 16.181704
3 002807 江阴银行 江苏江阴农村商业银行股份有限公司 19.274586
48 601997 贵阳银行 贵阳银行股份有限公司 20.489563
4 002839 张家港行 江苏张家港农村商业银行股份有限公司 20.599511
25 601166 兴业银行 兴业银行股份有限公司 21.206503
24 601128 常熟银行 江苏常熟农村商业银行股份有限公司 21.571187
19 600919 江苏银行 江苏银行股份有限公司 23.218299
22 601009 南京银行 南京银行股份有限公司 26.297500
16 600036 招商银行 招商银行股份有限公司 27.518708
0 000001 平安银行 平安银行股份有限公司 31.624747
2 002142 宁波银行 宁波银行股份有限公司 31.729062
6 002948 青岛银行 青岛银行股份有限公司 48.602573
7 002958 青农商行 青岛农村商业银行股份有限公司 108.983776
42 601860 紫金银行 江苏紫金农村商业银行股份有限公司 115.147347
21 600928 西安银行 西安银行股份有限公司 128.496683 查看全部
今年涨幅最少的是农业银行,最多的是新股 西安银行。
	ticker	secShortName	secFullName	y_chgPct
31 601288 农业银行 中国农业银行股份有限公司 -0.341178
11 600015 华夏银行 华夏银行股份有限公司 1.856174
45 601988 中国银行 中国银行股份有限公司 2.248533
32 601328 交通银行 交通银行股份有限公司 3.532657
30 601229 上海银行 上海银行股份有限公司 3.725781
35 601398 工商银行 中国工商银行股份有限公司 4.771403
40 601818 光大银行 中国光大银行股份有限公司 5.643119
27 601169 北京银行 北京银行股份有限公司 6.205580
14 600016 民生银行 中国民生银行股份有限公司 7.092815
5 002936 郑州银行 郑州银行股份有限公司 7.551112
49 601998 中信银行 中信银行股份有限公司 8.181956
43 601939 建设银行 中国建设银行股份有限公司 9.402651
41 601838 成都银行 成都银行股份有限公司 9.424554
52 603323 苏农银行 江苏苏州农村商业银行股份有限公司 12.375732
20 600926 杭州银行 杭州银行股份有限公司 12.933645
8 600000 浦发银行 上海浦东发展银行股份有限公司 14.752244
39 601577 长沙银行 长沙银行股份有限公司 14.792683
18 600908 无锡银行 无锡农村商业银行股份有限公司 16.181704
3 002807 江阴银行 江苏江阴农村商业银行股份有限公司 19.274586
48 601997 贵阳银行 贵阳银行股份有限公司 20.489563
4 002839 张家港行 江苏张家港农村商业银行股份有限公司 20.599511
25 601166 兴业银行 兴业银行股份有限公司 21.206503
24 601128 常熟银行 江苏常熟农村商业银行股份有限公司 21.571187
19 600919 江苏银行 江苏银行股份有限公司 23.218299
22 601009 南京银行 南京银行股份有限公司 26.297500
16 600036 招商银行 招商银行股份有限公司 27.518708
0 000001 平安银行 平安银行股份有限公司 31.624747
2 002142 宁波银行 宁波银行股份有限公司 31.729062
6 002948 青岛银行 青岛银行股份有限公司 48.602573
7 002958 青农商行 青岛农村商业银行股份有限公司 108.983776
42 601860 紫金银行 江苏紫金农村商业银行股份有限公司 115.147347
21 600928 西安银行 西安银行股份有限公司 128.496683

正则表达式替换中文换行符【python】

python爬虫李魔佛 发表了文章 • 0 个评论 • 40 次浏览 • 2019-05-13 11:02 • 来自相关话题

js里面的内容有中文的换行符。
使用正则表达式替换换行符。(也可以替换为任意字符)js=re.sub('\r\n','',js)
完毕。
js里面的内容有中文的换行符。
使用正则表达式替换换行符。(也可以替换为任意字符)
js=re.sub('\r\n','',js)

完毕。

request header显示Provisional headers are shown

python爬虫李魔佛 发表了文章 • 0 个评论 • 35 次浏览 • 2019-05-13 10:07 • 来自相关话题

出现这个情况,一般是因为装了一些插件,比如屏蔽广告的插件 ad block导致的。
把插件卸载了问题就解决了。
出现这个情况,一般是因为装了一些插件,比如屏蔽广告的插件 ad block导致的。
把插件卸载了问题就解决了。

mongodb motor 异步操作比同步操作的时间要慢?

回复

数据库李魔佛 发起了问题 • 1 人关注 • 0 个回复 • 54 次浏览 • 2019-05-09 17:01 • 来自相关话题

异步爬虫aiohttp post提交数据

python爬虫李魔佛 发表了文章 • 0 个评论 • 65 次浏览 • 2019-05-08 16:40 • 来自相关话题

import aiohttp
import asyncio

page = 30

post_data = {
'page': 1,
'pageSize': 10,
'keyWord': '',
'dpIds': '',
}

headers = {
"Accept": "application/json, text/javascript, */*; q=0.01",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "en-US,en;q=0.9",
"Connection": "keep-alive",
"Content-Length": "34",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"Cookie": "secure; JSESSIONID=8NGWetn7NWF7Hb-SSkrbbzGDbYQzmNM_gjKj8wql4PXn2uc7ruv0!-96282387; __jsluid=72f938f1aa890b0ab98d726eb9d7d36f; Hm_lvt_606ad402d71f074871f1daa788ba943d=1557302782; Hm_lpvt_606ad402d71f074871f1daa788ba943d=1557302788",
"Host": "credit.chaozhou.gov.cn",
"Origin": "http://credit.chaozhou.gov.cn",
"Referer": "http://credit.chaozhou.gov.cn/ ... ot%3B,
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36",
"X-Requested-With": "XMLHttpRequest",
}

result=[]


async def fetch(session,url, data):
async with session.post(url=url, data=data, headers=headers) as response:
return await response.json()

async def parse(html):
xzcf_list = html.get('newtxzcfList')
if xzcf_list is None:
return
for i in xzcf_list:
result.append(i)

async def downlod(page):
data=post_data.copy()
data['page']=page
url = 'http://credit.chaozhou.gov.cn/tfieldTypeActionJson!initXzcfListnew.do'
async with aiohttp.ClientSession() as session:
html=await fetch(session,url,data)
await parse(html)

loop = asyncio.get_event_loop()
tasks=[asyncio.ensure_future(downlod(i)) for i in range(1,page)]
tasks=asyncio.gather(*tasks)
# print(tasks)
loop.run_until_complete(tasks)
# loop.close()
# print(result)
count=0
for i in result:
print(i.get('cfXdrMc'))
count+=1
print(f'total {count}') 查看全部
import aiohttp
import asyncio

page = 30

post_data = {
'page': 1,
'pageSize': 10,
'keyWord': '',
'dpIds': '',
}

headers = {
"Accept": "application/json, text/javascript, */*; q=0.01",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "en-US,en;q=0.9",
"Connection": "keep-alive",
"Content-Length": "34",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"Cookie": "secure; JSESSIONID=8NGWetn7NWF7Hb-SSkrbbzGDbYQzmNM_gjKj8wql4PXn2uc7ruv0!-96282387; __jsluid=72f938f1aa890b0ab98d726eb9d7d36f; Hm_lvt_606ad402d71f074871f1daa788ba943d=1557302782; Hm_lpvt_606ad402d71f074871f1daa788ba943d=1557302788",
"Host": "credit.chaozhou.gov.cn",
"Origin": "http://credit.chaozhou.gov.cn",
"Referer": "http://credit.chaozhou.gov.cn/ ... ot%3B,
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36",
"X-Requested-With": "XMLHttpRequest",
}

result=[]


async def fetch(session,url, data):
async with session.post(url=url, data=data, headers=headers) as response:
return await response.json()

async def parse(html):
xzcf_list = html.get('newtxzcfList')
if xzcf_list is None:
return
for i in xzcf_list:
result.append(i)

async def downlod(page):
data=post_data.copy()
data['page']=page
url = 'http://credit.chaozhou.gov.cn/tfieldTypeActionJson!initXzcfListnew.do'
async with aiohttp.ClientSession() as session:
html=await fetch(session,url,data)
await parse(html)

loop = asyncio.get_event_loop()
tasks=[asyncio.ensure_future(downlod(i)) for i in range(1,page)]
tasks=asyncio.gather(*tasks)
# print(tasks)
loop.run_until_complete(tasks)
# loop.close()
# print(result)
count=0
for i in result:
print(i.get('cfXdrMc'))
count+=1
print(f'total {count}')

python异步aiohttp爬虫 - 异步爬取链家数据

python爬虫李魔佛 发表了文章 • 0 个评论 • 53 次浏览 • 2019-05-08 15:52 • 来自相关话题

import requests
from lxml import etree
import asyncio
import aiohttp
import pandas
import re
import math
import time

loction_info = ''' 1→杭州
2→武汉
3→北京
按ENTER确认:'''
loction_select = input(loction_info)
loction_dic = {'1': 'hz',
'2': 'wh',
'3': 'bj'}
city_url = 'https://{}.lianjia.com/ershoufang/'.format(loction_dic[loction_select])
down = input('请输入价格下限(万):')
up = input('请输入价格上限(万):')

inter_list = [(int(down), int(up))]


def half_inter(inter):
lower = inter[0]
upper = inter[1]
delta = int((upper - lower) / 2)
inter_list.remove(inter)
print('已经缩小价格区间', inter)
inter_list.append((lower, lower + delta))
inter_list.append((lower + delta, upper))


pagenum = {}


def get_num(inter):
url = city_url + 'bp{}ep{}/'.format(inter[0], inter[1])
r = requests.get(url).text
print(r)
num = int(etree.HTML(r).xpath("//h2[@class='total fl']/span/text()")[0].strip())
pagenum[(inter[0], inter[1])] = num
return num


totalnum = get_num(inter_list[0])

judge = True
while judge:
a = [get_num(x) > 3000 for x in inter_list]
if True in a:
judge = True
else:
judge = False
for i in inter_list:
if get_num(i) > 3000:
half_inter(i)
print('价格区间缩小完毕!')

url_lst = []
url_lst_failed = []
url_lst_successed = []
url_lst_duplicated = []

for i in inter_list:
totalpage = math.ceil(pagenum[i] / 30)
for j in range(1, totalpage + 1):
url = city_url + 'pg{}bp{}ep{}/'.format(j, i[0], i[1])
url_lst.append(url)
print('url列表获取完毕!')

info_lst = []


async def get_info(url):
async with aiohttp.ClientSession() as session:
async with session.get(url, timeout=5) as resp:
if resp.status != 200:
url_lst_failed.append(url)
else:
url_lst_successed.append(url)
r = await resp.text()
nodelist = etree.HTML(r).xpath("//ul[@class='sellListContent']/li")
# print('-------------------------------------------------------------')
# print('开始抓取第{}个页面的数据,共计{}个页面'.format(url_lst.index(url),len(url_lst)))
# print('开始抓取第{}个页面的数据,共计{}个页面'.format(url_lst.index(url), len(url_lst)))
# print('开始抓取第{}个页面的数据,共计{}个页面'.format(url_lst.index(url), len(url_lst)))
# print('-------------------------------------------------------------')
info_dic = {}
index = 1
print('开始抓取{}'.format(resp.url))
print('开始抓取{}'.format(resp.url))
print('开始抓取{}'.format(resp.url))
for node in nodelist:
try:
info_dic['title'] = node.xpath(".//div[@class='title']/a/text()")[0]
except:
info_dic['title'] = '/'
try:
info_dic['href'] = node.xpath(".//div[@class='title']/a/@href")[0]
except:
info_dic['href'] = '/'
try:
info_dic['xiaoqu'] = \
node.xpath(".//div[@class='houseInfo']")[0].xpath('string(.)').replace(' ', '').split('|')[0]
except:
info_dic['xiaoqu'] = '/'
try:
info_dic['huxing'] = \
node.xpath(".//div[@class='houseInfo']")[0].xpath('string(.)').replace(' ', '').split('|')[1]
except:
info_dic['huxing'] = '/'
try:
info_dic['area'] = \
node.xpath(".//div[@class='houseInfo']")[0].xpath('string(.)').replace(' ', '').split('|')[2]
except:
info_dic['area'] = '/'
try:
info_dic['chaoxiang'] = \
node.xpath(".//div[@class='houseInfo']")[0].xpath('string(.)').replace(' ', '').split('|')[3]
except:
info_dic['chaoxiang'] = '/'
try:
info_dic['zhuangxiu'] = \
node.xpath(".//div[@class='houseInfo']")[0].xpath('string(.)').replace(' ', '').split('|')[4]
except:
info_dic['zhuangxiu'] = '/'
try:
info_dic['dianti'] = \
node.xpath(".//div[@class='houseInfo']")[0].xpath('string(.)').replace(' ', '').split('|')[5]
except:
info_dic['dianti'] = '/'
try:
info_dic['louceng'] = re.findall('\((.*)\)', node.xpath(".//div[@class='positionInfo']/text()")[0])
except:
info_dic['louceng'] = '/'
try:
info_dic['nianxian'] = re.findall('\)(.*?)年', node.xpath(".//div[@class='positionInfo']/text()")[0])
except:
info_dic['nianxian'] = '/'
try:
info_dic['guanzhu'] = ''.join(re.findall('[0-9]', node.xpath(".//div[@class='followInfo']/text()")[
0].replace(' ', '').split('/')[0]))
except:
info_dic['guanzhu'] = '/'
try:
info_dic['daikan'] = ''.join(re.findall('[0-9]',
node.xpath(".//div[@class='followInfo']/text()")[0].replace(
' ', '').split('/')[1]))
except:
info_dic['daikan'] = '/'
try:
info_dic['fabu'] = node.xpath(".//div[@class='followInfo']/text()")[0].replace(' ', '').split('/')[
2]
except:
info_dic['fabu'] = '/'
try:
info_dic['totalprice'] = node.xpath(".//div[@class='totalPrice']/span/text()")[0]
except:
info_dic['totalprice'] = '/'
try:
info_dic['unitprice'] = node.xpath(".//div[@class='unitPrice']/span/text()")[0].replace('单价', '')
except:
info_dic['unitprice'] = '/'
if True in [info_dic['href'] in dic.values() for dic in info_lst]:
url_lst_duplicated.append(info_dic)
else:
info_lst.append(info_dic)
print('第{}条: {}→房屋信息抓取完毕!'.format(index, info_dic['title']))
index += 1
info_dic = {}


start = time.time()

# 首次抓取url_lst中的信息,部分url没有对其发起请求,不知道为什么
tasks = [asyncio.ensure_future(get_info(url)) for url in url_lst]
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))

# 将没有发起请求的url放入一个列表,对其进行循环抓取,直到所有url都被发起请求
url_lst_unrequested = []
for url in url_lst:
if url not in url_lst_successed or url_lst_failed:
url_lst_unrequested.append(url)
while len(url_lst_unrequested) > 0:
tasks_unrequested = [asyncio.ensure_future(get_info(url)) for url in url_lst_unrequested]
loop.run_until_complete(asyncio.wait(tasks_unrequested))
url_lst_unrequested = []
for url in url_lst:
if url not in url_lst_successed:
url_lst_unrequested.append(url)
end = time.time()
print('当前价格区间段内共有{}套二手房源\(包含{}条重复房源\),实际获得{}条房源信息。'.format(totalnum, len(url_lst_duplicated), len(info_lst)))
print('总共耗时{}秒'.format(end - start))

df = pandas.DataFrame(info_lst)
df.to_csv("ljwh.csv", encoding='gbk') 查看全部
import requests
from lxml import etree
import asyncio
import aiohttp
import pandas
import re
import math
import time

loction_info = ''' 1→杭州
2→武汉
3→北京
按ENTER确认:'''
loction_select = input(loction_info)
loction_dic = {'1': 'hz',
'2': 'wh',
'3': 'bj'}
city_url = 'https://{}.lianjia.com/ershoufang/'.format(loction_dic[loction_select])
down = input('请输入价格下限(万):')
up = input('请输入价格上限(万):')

inter_list = [(int(down), int(up))]


def half_inter(inter):
lower = inter[0]
upper = inter[1]
delta = int((upper - lower) / 2)
inter_list.remove(inter)
print('已经缩小价格区间', inter)
inter_list.append((lower, lower + delta))
inter_list.append((lower + delta, upper))


pagenum = {}


def get_num(inter):
url = city_url + 'bp{}ep{}/'.format(inter[0], inter[1])
r = requests.get(url).text
print(r)
num = int(etree.HTML(r).xpath("//h2[@class='total fl']/span/text()")[0].strip())
pagenum[(inter[0], inter[1])] = num
return num


totalnum = get_num(inter_list[0])

judge = True
while judge:
a = [get_num(x) > 3000 for x in inter_list]
if True in a:
judge = True
else:
judge = False
for i in inter_list:
if get_num(i) > 3000:
half_inter(i)
print('价格区间缩小完毕!')

url_lst = []
url_lst_failed = []
url_lst_successed = []
url_lst_duplicated = []

for i in inter_list:
totalpage = math.ceil(pagenum[i] / 30)
for j in range(1, totalpage + 1):
url = city_url + 'pg{}bp{}ep{}/'.format(j, i[0], i[1])
url_lst.append(url)
print('url列表获取完毕!')

info_lst = []


async def get_info(url):
async with aiohttp.ClientSession() as session:
async with session.get(url, timeout=5) as resp:
if resp.status != 200:
url_lst_failed.append(url)
else:
url_lst_successed.append(url)
r = await resp.text()
nodelist = etree.HTML(r).xpath("//ul[@class='sellListContent']/li")
# print('-------------------------------------------------------------')
# print('开始抓取第{}个页面的数据,共计{}个页面'.format(url_lst.index(url),len(url_lst)))
# print('开始抓取第{}个页面的数据,共计{}个页面'.format(url_lst.index(url), len(url_lst)))
# print('开始抓取第{}个页面的数据,共计{}个页面'.format(url_lst.index(url), len(url_lst)))
# print('-------------------------------------------------------------')
info_dic = {}
index = 1
print('开始抓取{}'.format(resp.url))
print('开始抓取{}'.format(resp.url))
print('开始抓取{}'.format(resp.url))
for node in nodelist:
try:
info_dic['title'] = node.xpath(".//div[@class='title']/a/text()")[0]
except:
info_dic['title'] = '/'
try:
info_dic['href'] = node.xpath(".//div[@class='title']/a/@href")[0]
except:
info_dic['href'] = '/'
try:
info_dic['xiaoqu'] = \
node.xpath(".//div[@class='houseInfo']")[0].xpath('string(.)').replace(' ', '').split('|')[0]
except:
info_dic['xiaoqu'] = '/'
try:
info_dic['huxing'] = \
node.xpath(".//div[@class='houseInfo']")[0].xpath('string(.)').replace(' ', '').split('|')[1]
except:
info_dic['huxing'] = '/'
try:
info_dic['area'] = \
node.xpath(".//div[@class='houseInfo']")[0].xpath('string(.)').replace(' ', '').split('|')[2]
except:
info_dic['area'] = '/'
try:
info_dic['chaoxiang'] = \
node.xpath(".//div[@class='houseInfo']")[0].xpath('string(.)').replace(' ', '').split('|')[3]
except:
info_dic['chaoxiang'] = '/'
try:
info_dic['zhuangxiu'] = \
node.xpath(".//div[@class='houseInfo']")[0].xpath('string(.)').replace(' ', '').split('|')[4]
except:
info_dic['zhuangxiu'] = '/'
try:
info_dic['dianti'] = \
node.xpath(".//div[@class='houseInfo']")[0].xpath('string(.)').replace(' ', '').split('|')[5]
except:
info_dic['dianti'] = '/'
try:
info_dic['louceng'] = re.findall('\((.*)\)', node.xpath(".//div[@class='positionInfo']/text()")[0])
except:
info_dic['louceng'] = '/'
try:
info_dic['nianxian'] = re.findall('\)(.*?)年', node.xpath(".//div[@class='positionInfo']/text()")[0])
except:
info_dic['nianxian'] = '/'
try:
info_dic['guanzhu'] = ''.join(re.findall('[0-9]', node.xpath(".//div[@class='followInfo']/text()")[
0].replace(' ', '').split('/')[0]))
except:
info_dic['guanzhu'] = '/'
try:
info_dic['daikan'] = ''.join(re.findall('[0-9]',
node.xpath(".//div[@class='followInfo']/text()")[0].replace(
' ', '').split('/')[1]))
except:
info_dic['daikan'] = '/'
try:
info_dic['fabu'] = node.xpath(".//div[@class='followInfo']/text()")[0].replace(' ', '').split('/')[
2]
except:
info_dic['fabu'] = '/'
try:
info_dic['totalprice'] = node.xpath(".//div[@class='totalPrice']/span/text()")[0]
except:
info_dic['totalprice'] = '/'
try:
info_dic['unitprice'] = node.xpath(".//div[@class='unitPrice']/span/text()")[0].replace('单价', '')
except:
info_dic['unitprice'] = '/'
if True in [info_dic['href'] in dic.values() for dic in info_lst]:
url_lst_duplicated.append(info_dic)
else:
info_lst.append(info_dic)
print('第{}条: {}→房屋信息抓取完毕!'.format(index, info_dic['title']))
index += 1
info_dic = {}


start = time.time()

# 首次抓取url_lst中的信息,部分url没有对其发起请求,不知道为什么
tasks = [asyncio.ensure_future(get_info(url)) for url in url_lst]
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))

# 将没有发起请求的url放入一个列表,对其进行循环抓取,直到所有url都被发起请求
url_lst_unrequested = []
for url in url_lst:
if url not in url_lst_successed or url_lst_failed:
url_lst_unrequested.append(url)
while len(url_lst_unrequested) > 0:
tasks_unrequested = [asyncio.ensure_future(get_info(url)) for url in url_lst_unrequested]
loop.run_until_complete(asyncio.wait(tasks_unrequested))
url_lst_unrequested = []
for url in url_lst:
if url not in url_lst_successed:
url_lst_unrequested.append(url)
end = time.time()
print('当前价格区间段内共有{}套二手房源\(包含{}条重复房源\),实际获得{}条房源信息。'.format(totalnum, len(url_lst_duplicated), len(info_lst)))
print('总共耗时{}秒'.format(end - start))

df = pandas.DataFrame(info_lst)
df.to_csv("ljwh.csv", encoding='gbk')

神经网络中数值梯度的计算 python代码

深度学习李魔佛 发表了文章 • 0 个评论 • 68 次浏览 • 2019-05-07 19:12 • 来自相关话题

深度学习入门python
 
import matplotlib.pyplot as plt
import numpy as np
import time
from collections import OrderedDict

def softmax(a):
a = a - np.max(a)
exp_a = np.exp(a)
exp_a_sum = np.sum(exp_a)
return exp_a / exp_a_sum


def cross_entropy_error(t, y):
delta = 1e-7
s = -1 * np.sum(t * np.log(y + delta))
# print('cross entropy ',s)
return s


class simpleNet:
def __init__(self):
self.W = np.random.randn(2, 3)

def predict(self, x):
print('current w',self.W)
return np.dot(x, self.W)

def loss(self, x, t):
z = self.predict(x)
# print(z)
# print(z.ndim)
y = softmax(z)
# print('y',y)
loss = cross_entropy_error(y, t) # y为预测的值
return loss



def numerical_gradient_(f, x): # 针对2维的情况 甚至是多维
h = 1e-4 # 0.0001
grad = np.zeros_like(x)

it = np.nditer(x, flags=['multi_index'], op_flags=['readwrite'])
while not it.finished:
idx = it.multi_index
print('idx', idx)
tmp_val = x[idx]
x[idx] = float(tmp_val) + h
fxh1 = f(x) # f(x+h)
print('fxh1 ', fxh1)
# print('current W', net.W)
x[idx] = tmp_val - h
fxh2 = f(x) # f(x-h)
print('fxh2 ', fxh2)
# print('next currnet W ', net.W)
grad[idx] = (fxh1 - fxh2) / (2 * h)

x[idx] = tmp_val # 还原值
it.iternext()

return grad



net = simpleNet()
x=np.array([0.6,0.9])
t = np.array([0.0,0.0,1.0])

def f(W):
return net.loss(x,t)

grads =numerical_gradient_(f,net.W)
print(grads) 查看全部
深度学习入门python
 
import matplotlib.pyplot as plt
import numpy as np
import time
from collections import OrderedDict

def softmax(a):
a = a - np.max(a)
exp_a = np.exp(a)
exp_a_sum = np.sum(exp_a)
return exp_a / exp_a_sum


def cross_entropy_error(t, y):
delta = 1e-7
s = -1 * np.sum(t * np.log(y + delta))
# print('cross entropy ',s)
return s


class simpleNet:
def __init__(self):
self.W = np.random.randn(2, 3)

def predict(self, x):
print('current w',self.W)
return np.dot(x, self.W)

def loss(self, x, t):
z = self.predict(x)
# print(z)
# print(z.ndim)
y = softmax(z)
# print('y',y)
loss = cross_entropy_error(y, t) # y为预测的值
return loss



def numerical_gradient_(f, x): # 针对2维的情况 甚至是多维
h = 1e-4 # 0.0001
grad = np.zeros_like(x)

it = np.nditer(x, flags=['multi_index'], op_flags=['readwrite'])
while not it.finished:
idx = it.multi_index
print('idx', idx)
tmp_val = x[idx]
x[idx] = float(tmp_val) + h
fxh1 = f(x) # f(x+h)
print('fxh1 ', fxh1)
# print('current W', net.W)
x[idx] = tmp_val - h
fxh2 = f(x) # f(x-h)
print('fxh2 ', fxh2)
# print('next currnet W ', net.W)
grad[idx] = (fxh1 - fxh2) / (2 * h)

x[idx] = tmp_val # 还原值
it.iternext()

return grad



net = simpleNet()
x=np.array([0.6,0.9])
t = np.array([0.0,0.0,1.0])

def f(W):
return net.loss(x,t)

grads =numerical_gradient_(f,net.W)
print(grads)

【可转债剩余转股比例数据排序】【2019-05-06】

股票李魔佛 发表了文章 • 0 个评论 • 85 次浏览 • 2019-05-06 15:28 • 来自相关话题

数据如下:










 
剩余的比例越少,上市公司下调转股价的欲望就越少。 也就是会任由可转债在那里晾着,不会积极拉正股。
 
数据定期更新。
 
原创文章,
转载请注明出处:
http://30daydo.com/article/472
  查看全部
数据如下:

剩余比例1.PNG


剩余比例2.PNG

 
剩余的比例越少,上市公司下调转股价的欲望就越少。 也就是会任由可转债在那里晾着,不会积极拉正股。
 
数据定期更新。
 
原创文章,
转载请注明出处:
http://30daydo.com/article/472
 

ElasticSearch配置集群无法发现节点问题【已解决】

数据库李魔佛 发表了文章 • 0 个评论 • 62 次浏览 • 2019-05-05 10:00 • 来自相关话题

单个节点可以运行,但是配置为多个服务器集群的时候,总是提示无法发现服务器,花了点时间排查了问题,原来是配置文件的timeout问题,需要把timetout的值设置大一些,然后集群就可以发现到局域网中的其他节点。
 
修改文件elasticsearch.yml 文件中的timeout参数,改成原来值得10倍就可以了。 查看全部
单个节点可以运行,但是配置为多个服务器集群的时候,总是提示无法发现服务器,花了点时间排查了问题,原来是配置文件的timeout问题,需要把timetout的值设置大一些,然后集群就可以发现到局域网中的其他节点。
 
修改文件elasticsearch.yml 文件中的timeout参数,改成原来值得10倍就可以了。

pycharm激活码 有效期到2019年11月

闲聊李魔佛 发表了文章 • 0 个评论 • 121 次浏览 • 2019-05-05 09:47 • 来自相关话题

pycharm专业版激活码如下,亲测有效,有效期到2019年11月7日
 MTW881U3Z5-eyJsaWNlbnNlSWQiOiJNVFc4ODFVM1o1IiwibGljZW5zZWVOYW1lIjoiTnNzIEltIiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IkZvciBlZHVjYXRpb25hbCB1c2Ugb25seSIsImNoZWNrQ29uY3VycmVudFVzZSI6ZmFsc2UsInByb2R1Y3RzIjpbeyJjb2RlIjoiSUkiLCJwYWlkVXBUbyI6IjIwMTktMTEtMDYifSx7ImNvZGUiOiJBQyIsInBhaWRVcFRvIjoiMjAxOS0xMS0wNiJ9LHsiY29kZSI6IkRQTiIsInBhaWRVcFRvIjoiMjAxOS0xMS0wNiJ9LHsiY29kZSI6IlBTIiwicGFpZFVwVG8iOiIyMDE5LTExLTA2In0seyJjb2RlIjoiR08iLCJwYWlkVXBUbyI6IjIwMTktMTEtMDYifSx7ImNvZGUiOiJETSIsInBhaWRVcFRvIjoiMjAxOS0xMS0wNiJ9LHsiY29kZSI6IkNMIiwicGFpZFVwVG8iOiIyMDE5LTExLTA2In0seyJjb2RlIjoiUlMwIiwicGFpZFVwVG8iOiIyMDE5LTExLTA2In0seyJjb2RlIjoiUkMiLCJwYWlkVXBUbyI6IjIwMTktMTEtMDYifSx7ImNvZGUiOiJSRCIsInBhaWRVcFRvIjoiMjAxOS0xMS0wNiJ9LHsiY29kZSI6IlBDIiwicGFpZFVwVG8iOiIyMDE5LTExLTA2In0seyJjb2RlIjoiUk0iLCJwYWlkVXBUbyI6IjIwMTktMTEtMDYifSx7ImNvZGUiOiJXUyIsInBhaWRVcFRvIjoiMjAxOS0xMS0wNiJ9LHsiY29kZSI6IkRCIiwicGFpZFVwVG8iOiIyMDE5LTExLTA2In0seyJjb2RlIjoiREMiLCJwYWlkVXBUbyI6IjIwMTktMTEtMDYifSx7ImNvZGUiOiJSU1UiLCJwYWlkVXBUbyI6IjIwMTktMTEtMDYifV0sImhhc2giOiIxMDgyODE0Ni8wIiwiZ3JhY2VQZXJpb2REYXlzIjowLCJhdXRvUHJvbG9uZ2F0ZWQiOmZhbHNlLCJpc0F1dG9Qcm9sb25nYXRlZCI6ZmFsc2V9-aKyalfjUfiV5UXfhaMGgOqrMzTYy2rnsmobL47k8tTpR/jvG6HeL3FxxleetI+W+Anw3ZSe8QAMsSxqVS4podwlQgIe7f+3w7zyAT1j8HMVlfl2h96KzygdGpDSbwTbwOkJ6/5TQOPgAP86mkaSiM97KgvkZV/2nXQHRz1yhm+MT+OsioTwxDhd/22sSGq6KuIztZ03UvSciEmyrPdl2ueJw1WuT9YmFjdtTm9G7LuXvCM6eav+BgCRm+wwtUeDfoQqigbp0t6FQgkdQrcjoWvLSB0IUgp/f4qGf254fA7lXskT2VCFdDvi0jgxLyMVct1cKnPdM6fkHnbdSXKYDWw==-MIIElTCCAn2gAwIBAgIBCTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTE4MTEwMTEyMjk0NloXDTIwMTEwMjEyMjk0NlowaDELMAkGA1UEBhMCQ1oxDjAMBgNVBAgMBU51c2xlMQ8wDQYDVQQHDAZQcmFndWUxGTAXBgNVBAoMEEpldEJyYWlucyBzLnIuby4xHTAbBgNVBAMMFHByb2QzeS1mcm9tLTIwMTgxMTAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxcQkq+zdxlR2mmRYBPzGbUNdMN6OaXiXzxIWtMEkrJMO/5oUfQJbLLuMSMK0QHFmaI37WShyxZcfRCidwXjot4zmNBKnlyHodDij/78TmVqFl8nOeD5+07B8VEaIu7c3E1N+e1doC6wht4I4+IEmtsPAdoaj5WCQVQbrI8KeT8M9VcBIWX7fD0fhexfg3ZRt0xqwMcXGNp3DdJHiO0rCdU+Itv7EmtnSVq9jBG1usMSFvMowR25mju2JcPFp1+I4ZI+FqgR8gyG8oiNDyNEoAbsR3lOpI7grUYSvkB/xVy/VoklPCK2h0f0GJxFjnye8NT1PAywoyl7RmiAVRE/EKwIDAQABo4GZMIGWMAkGA1UdEwQCMAAwHQYDVR0OBBYEFGEpG9oZGcfLMGNBkY7SgHiMGgTcMEgGA1UdIwRBMD+AFKOetkhnQhI2Qb1t4Lm0oFKLl/GzoRykGjAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBggkA0myxg7KDeeEwEwYDVR0lBAwwCgYIKwYBBQUHAwEwCwYDVR0PBAQDAgWgMA0GCSqGSIb3DQEBCwUAA4ICAQAF8uc+YJOHHwOFcPzmbjcxNDuGoOUIP+2h1R75Lecswb7ru2LWWSUMtXVKQzChLNPn/72W0k+oI056tgiwuG7M49LXp4zQVlQnFmWU1wwGvVhq5R63Rpjx1zjGUhcXgayu7+9zMUW596Lbomsg8qVve6euqsrFicYkIIuUu4zYPndJwfe0YkS5nY72SHnNdbPhEnN8wcB2Kz+OIG0lih3yz5EqFhld03bGp222ZQCIghCTVL6QBNadGsiN/lWLl4JdR3lJkZzlpFdiHijoVRdWeSWqM4y0t23c92HXKrgppoSV18XMxrWVdoSM3nuMHwxGhFyde05OdDtLpCv+jlWf5REAHHA201pAU6bJSZINyHDUTB+Beo28rRXSwSh3OUIvYwKNVeoBY+KwOJ7WnuTCUq1meE6GkKc4D/cXmgpOyW/1SmBz3XjVIi/zprZ0zf3qH5mkphtg6ksjKgKjmx1cXfZAAX6wcDBNaCL+Ortep1Dh8xDUbqbBVNBL4jbiL3i3xsfNiyJgaZ5sX7i8tmStEpLbPwvHcByuf59qJhV/bZOl8KqJBETCDJcY6O2aqhTUy+9x93ThKs1GKrRPePrWPluud7ttlgtRveit/pcBrnQcXOl1rHq7ByB8CFAxNotRUYL9IF5n3wJOgkPojMy6jetQA5Ogc8Sm7RG6vg1yow==原创文章
转载请注明出处:
http://30daydo.com/article/470
  查看全部
pycharm专业版激活码如下,亲测有效,有效期到2019年11月7日
 
MTW881U3Z5-eyJsaWNlbnNlSWQiOiJNVFc4ODFVM1o1IiwibGljZW5zZWVOYW1lIjoiTnNzIEltIiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IkZvciBlZHVjYXRpb25hbCB1c2Ugb25seSIsImNoZWNrQ29uY3VycmVudFVzZSI6ZmFsc2UsInByb2R1Y3RzIjpbeyJjb2RlIjoiSUkiLCJwYWlkVXBUbyI6IjIwMTktMTEtMDYifSx7ImNvZGUiOiJBQyIsInBhaWRVcFRvIjoiMjAxOS0xMS0wNiJ9LHsiY29kZSI6IkRQTiIsInBhaWRVcFRvIjoiMjAxOS0xMS0wNiJ9LHsiY29kZSI6IlBTIiwicGFpZFVwVG8iOiIyMDE5LTExLTA2In0seyJjb2RlIjoiR08iLCJwYWlkVXBUbyI6IjIwMTktMTEtMDYifSx7ImNvZGUiOiJETSIsInBhaWRVcFRvIjoiMjAxOS0xMS0wNiJ9LHsiY29kZSI6IkNMIiwicGFpZFVwVG8iOiIyMDE5LTExLTA2In0seyJjb2RlIjoiUlMwIiwicGFpZFVwVG8iOiIyMDE5LTExLTA2In0seyJjb2RlIjoiUkMiLCJwYWlkVXBUbyI6IjIwMTktMTEtMDYifSx7ImNvZGUiOiJSRCIsInBhaWRVcFRvIjoiMjAxOS0xMS0wNiJ9LHsiY29kZSI6IlBDIiwicGFpZFVwVG8iOiIyMDE5LTExLTA2In0seyJjb2RlIjoiUk0iLCJwYWlkVXBUbyI6IjIwMTktMTEtMDYifSx7ImNvZGUiOiJXUyIsInBhaWRVcFRvIjoiMjAxOS0xMS0wNiJ9LHsiY29kZSI6IkRCIiwicGFpZFVwVG8iOiIyMDE5LTExLTA2In0seyJjb2RlIjoiREMiLCJwYWlkVXBUbyI6IjIwMTktMTEtMDYifSx7ImNvZGUiOiJSU1UiLCJwYWlkVXBUbyI6IjIwMTktMTEtMDYifV0sImhhc2giOiIxMDgyODE0Ni8wIiwiZ3JhY2VQZXJpb2REYXlzIjowLCJhdXRvUHJvbG9uZ2F0ZWQiOmZhbHNlLCJpc0F1dG9Qcm9sb25nYXRlZCI6ZmFsc2V9-aKyalfjUfiV5UXfhaMGgOqrMzTYy2rnsmobL47k8tTpR/jvG6HeL3FxxleetI+W+Anw3ZSe8QAMsSxqVS4podwlQgIe7f+3w7zyAT1j8HMVlfl2h96KzygdGpDSbwTbwOkJ6/5TQOPgAP86mkaSiM97KgvkZV/2nXQHRz1yhm+MT+OsioTwxDhd/22sSGq6KuIztZ03UvSciEmyrPdl2ueJw1WuT9YmFjdtTm9G7LuXvCM6eav+BgCRm+wwtUeDfoQqigbp0t6FQgkdQrcjoWvLSB0IUgp/f4qGf254fA7lXskT2VCFdDvi0jgxLyMVct1cKnPdM6fkHnbdSXKYDWw==-MIIElTCCAn2gAwIBAgIBCTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTE4MTEwMTEyMjk0NloXDTIwMTEwMjEyMjk0NlowaDELMAkGA1UEBhMCQ1oxDjAMBgNVBAgMBU51c2xlMQ8wDQYDVQQHDAZQcmFndWUxGTAXBgNVBAoMEEpldEJyYWlucyBzLnIuby4xHTAbBgNVBAMMFHByb2QzeS1mcm9tLTIwMTgxMTAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxcQkq+zdxlR2mmRYBPzGbUNdMN6OaXiXzxIWtMEkrJMO/5oUfQJbLLuMSMK0QHFmaI37WShyxZcfRCidwXjot4zmNBKnlyHodDij/78TmVqFl8nOeD5+07B8VEaIu7c3E1N+e1doC6wht4I4+IEmtsPAdoaj5WCQVQbrI8KeT8M9VcBIWX7fD0fhexfg3ZRt0xqwMcXGNp3DdJHiO0rCdU+Itv7EmtnSVq9jBG1usMSFvMowR25mju2JcPFp1+I4ZI+FqgR8gyG8oiNDyNEoAbsR3lOpI7grUYSvkB/xVy/VoklPCK2h0f0GJxFjnye8NT1PAywoyl7RmiAVRE/EKwIDAQABo4GZMIGWMAkGA1UdEwQCMAAwHQYDVR0OBBYEFGEpG9oZGcfLMGNBkY7SgHiMGgTcMEgGA1UdIwRBMD+AFKOetkhnQhI2Qb1t4Lm0oFKLl/GzoRykGjAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBggkA0myxg7KDeeEwEwYDVR0lBAwwCgYIKwYBBQUHAwEwCwYDVR0PBAQDAgWgMA0GCSqGSIb3DQEBCwUAA4ICAQAF8uc+YJOHHwOFcPzmbjcxNDuGoOUIP+2h1R75Lecswb7ru2LWWSUMtXVKQzChLNPn/72W0k+oI056tgiwuG7M49LXp4zQVlQnFmWU1wwGvVhq5R63Rpjx1zjGUhcXgayu7+9zMUW596Lbomsg8qVve6euqsrFicYkIIuUu4zYPndJwfe0YkS5nY72SHnNdbPhEnN8wcB2Kz+OIG0lih3yz5EqFhld03bGp222ZQCIghCTVL6QBNadGsiN/lWLl4JdR3lJkZzlpFdiHijoVRdWeSWqM4y0t23c92HXKrgppoSV18XMxrWVdoSM3nuMHwxGhFyde05OdDtLpCv+jlWf5REAHHA201pAU6bJSZINyHDUTB+Beo28rRXSwSh3OUIvYwKNVeoBY+KwOJ7WnuTCUq1meE6GkKc4D/cXmgpOyW/1SmBz3XjVIi/zprZ0zf3qH5mkphtg6ksjKgKjmx1cXfZAAX6wcDBNaCL+Ortep1Dh8xDUbqbBVNBL4jbiL3i3xsfNiyJgaZ5sX7i8tmStEpLbPwvHcByuf59qJhV/bZOl8KqJBETCDJcY6O2aqhTUy+9x93ThKs1GKrRPePrWPluud7ttlgtRveit/pcBrnQcXOl1rHq7ByB8CFAxNotRUYL9IF5n3wJOgkPojMy6jetQA5Ogc8Sm7RG6vg1yow==
原创文章
转载请注明出处:
http://30daydo.com/article/470