- 博客(74)
- 资源 (4)
- 收藏
- 关注

原创 【深度好文】simhash文本去重流程
对于类似于头条客户端而言,推荐的每一刷的新闻都必须是不同的新闻,这就需要对新闻文本进行排重。传统的去重一般是对文章的url链接进行排重,但是对于抓取的网页来说,各大平台的新闻可能存在重复,对于只通过文章url进行排重是不靠谱的,为了解决这个痛点于是就提出了用simhash来解决这个难题。1.简介 传统的Hash算法只负责将原始内容尽量均匀随机地映射为一个签名值,原理上仅相当于伪随机数产生算法。即便是两个原始内容只相差一个字节,所产生的签名也很可能差别很大,所以传统的Hash是无法在签名的维度上
2020-11-25 17:22:00
402

原创 本人博客迁移到知乎专栏
感谢大家一直以来对我博客的关注,本人博客现在迁移到知乎上面了,感兴趣的朋友可以过去看看 https://zhuanlan.zhihu.com/6130030101 。peace & respect...
2019-06-29 08:01:45
628

原创 分布式爬虫调度策略
前言:爬虫是偏IO型的任务,分布式爬虫的实现难度比分布式计算和分布式存储简单得多。 个人以为分布式爬虫需要考虑的点主要有以下几个:爬虫任务的统一调度爬虫任务的统一去重存储问题速度问题足够“健壮”的情况下实现起来越简单/方便越好最好支持“断点续爬”功能Python分布式爬虫比较常用的应该是scrapy框架加上Redis内存数据库,中间的调度任务等用scrapy-redis模块实现
2017-08-31 22:55:27
1772

原创 Scrapy五大组件介绍
Scrapy框架主要由五大组件组成,它们分别是调度器(Scheduler)、下载器(Downloader)、爬虫(Spider)和实体管道(Item Pipeline)、Scrapy引擎(Scrapy Engine)。下面我们分别介绍各个组件的作用。
2017-08-16 10:26:57
3016

原创 基于Python+scrapy+redis的分布式爬虫实现框架
爬虫技术,无论是在学术领域,还是在工程领域,都扮演者非常重要的角色。相比于其他技术,爬虫技术虽然在实现上比较简单,没有那么多深奥的技术难点,但想要构建一套稳定、高效、自动化的爬虫框架,也并不是一件容易的事情。这里笔者打算就个人经验,介绍一种分布式爬虫框架的实现方法和工作原理,来给刚刚入门爬虫的同学们一点启发和提示。同时也希望大牛们能发表一些看法。
2017-08-08 17:58:17
12863
1

原创 网页爬虫之cookie自动获取
本文实现cookie的自动获取,及cookie过期自动更新。社交网站中的很多信息需要登录才能获取到,以微博为例,不登录账号,只能看到大V的前十条微博。保持登录状态,必须要用到Cookie。以登录www.weibo.cn 为例:在chrome中输入:http://login.weibo.cn/login/分析控制台的Headers的请求返回,会看到weibo.cn有几组返回的co
2016-08-03 16:45:08
41839
4

原创 log4j.properties配置详解与实例-全部测试通过
最近使用log4j写log时候发现网上的写的都是千篇一律,写的好的嘛不全,写的全一点的嘛没有一点格式,看着累。这里把网上收集到的整理了一下,并且全部都在机器上测试成功了。这么好的文档估计没有了吧? ################################################################################ #①配置根Logger,其语法为
2016-08-01 11:21:40
25080
8

原创 【Python】爬虫小结
1.获取页面源代码1.1获取http类型的页面源代码[python] view plain copy import time,os,cookielib,urllib2,urllib import datetime,StringIO,gzip def getHtml(url,referurl=None,cookie=None,postdata=No
2016-07-15 16:05:25
754

翻译 【Python】寻找电影品味相似的用户并推荐相关电影
目录(?)[-]过程电影评价多重分类用户信息录入计算皮尔逊相关系数找出兴趣相投的用户插入自己的数据向某用户推荐电影加权平均所有人的评价结果与分析过程:用爬虫抓取豆瓣电影用户信息用多重分类法,定义电影评价等级计算自己与用户的皮尔逊相关度以人为主体分析相似度:找出志同道合的人,可以发现潜在喜欢的商品以商品为主体分析相似度:找出相似的商品,可以发现
2016-07-15 15:31:32
2549

翻译 Python的特殊属性和用法
用__dict__把dict转换为对象的属性1 class Messenger:2 def __init__(self, **kwargs):3 self.__dict__ = kwargs4 5 6 m = Messenger(info="some information", b=[’a’, ’list’])7 m.more = 118 prin
2016-06-18 09:15:14
6011

原创 python实现爬取千万淘宝商品的方法
本文实例讲述了python实现爬取千万淘宝商品的方法。分享给大家供大家参考。具体实现方法如下:123456789101112131415161718192021222324252627282930313233343536
2016-06-13 12:53:40
7763
1

原创 Python使用Scrapy爬取妹子图
Python Scrapy爬虫,听说妹子图挺火,我整站爬取了,上周一共搞了大概8000多张图片。和大家分享一下。核心爬虫代码123456789101112131415161718192021222324252627282930313
2016-06-13 12:51:49
3167

原创 Python实现爬取知乎神回复简单爬虫代码分享
看知乎的时候发现了一个 “如何正确地吐槽” 收藏夹,里面的一些神回复实在很搞笑,但是一页一页地看又有点麻烦,而且每次都要打开网页,于是想如果全部爬下来到一个文件里面,是不是看起来很爽,并且随时可以看到全部的,于是就开始动手了。工具1.Python 2.72.BeautifulSoup分析网页我们先来看看知乎上该网页的情况网址:,容易看到,网址是有规律的,page慢慢递增,这
2016-06-13 12:49:52
2770

原创 python爬取网站数据保存使用的方法
编码问题因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了。问题要从文字的编码讲起。原本的英文编码只有0~255,刚好是8位1个字节。为了表示各种不同的语言,自然要进行扩充。中文的话有GB系列。可能还听说过Unicode和UTF-8,那么,它们之间是什么关系呢?Unicode是一种编码方案,又称万国码,可见其包含之广。但是具体存储到计算机上,并不用这种编码,
2016-06-13 12:41:04
2820

原创 利用selenium登陆智联招聘,获取cookie
# -*- coding: utf-8 -*-import timeimport requestsfrom pandas import Series, DataFrameimport sysreload(sys)from selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import We
2016-06-08 15:33:25
5174

原创 python实现自动化登陆不需要密码
比如我下面这段给出的example,可以完成你的需求,模拟登录人人# -*- coding:utf-8 -*-from selenium import webdriverfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium.webdriver.support import expected_cond
2016-06-08 11:00:31
3328

原创 python利用selenium获取cookie实现免登陆
目录安装selenium package引入selenium package 建立webdriver对象打开设定的url并等待response通过xpath找到登录框并填入相应帐号密码模拟点击登录验证登录成功与否若currenturl发生变化则认为登录成功通过对象的方法获取当前访问网站的session cookie得到cookie之后就可以通过urllib2访问相应的网站并可实现网页爬取
2016-06-08 10:37:56
45481
5

原创 Selenium Webdriver元素定位的八种常用方式
在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素。其中By类的常用定位方式共八种,现分别介绍如下。1. By.name()假设我们要测试的页面源码如下:button id="gbqfba" aria-label="Google Search" name="btnK" class=
2016-06-07 08:42:20
1800

原创 XPath和CSS 3的解析器比较
最近,我做了很多工作来实现一个同时支持XPath和CSS 3的解析器,令我惊讶的是:它们俩在某些方面上非常相似,而在另一些方面上又完全不同.不同的地方有,CSS是用来配合HTML工作的,可以使用#id来根据ID获取元素,以及使用.class来根据class获取元素.这些用XPath实现的话都不会那么简洁,反过来呢,XPath可以使用..来返回到DOM树的上层节点中,还可以使用foo[bar]来获取
2016-05-24 17:06:27
4565

原创 Python爬虫框架scrapy批量获取腾讯招聘网上面的信息
所谓网络爬虫,就是一个在网上到处或定向抓取数据的程序,当然,这种说法不够专业,更专业的描述就是,抓取特定网站网页的HTML数据。不过由于一个网站的网页很多,而我们又不可能事先知道所有网页的URL地址,所以,如何保证我们抓取到了网站的所有HTML页面就是一个有待考究的问题了。一般的方法是,定义一个入口页面,然后一般一个页面会有其他页面的URL,于是从当前页面获取到这些URL加入到爬虫的抓取队列中,然
2016-05-24 16:26:49
2898

原创 python http请求以及Cookie的模拟
对去哪儿网请求发送http查询:方法中,url必须是无一个dns查询的url,不能够包含Url中的子目录;比如www.baidu.com是一个有效的url,而 www.baidu.com/file/ 就不是一个有效的urlpost的时候header中的refer那个参数很重要。[python] view plain copy def get(self
2016-05-17 09:17:42
3706

原创 python通过get,post方式发送http请求和接收http响应的方法
本文实例讲述了python通过get,post方式发送http请求和接收http响应的方法。分享给大家供大家参考。具体如下:测试用CGI,名字为test.py,放在apache的cgi-bin目录下:12345678910#!/usr/bin/pythonimport cgidef ma
2016-05-17 09:10:19
1590

原创 登录知乎的爬虫
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Date====: 2015-09-30 20:53:15import requestsfrom bs4 import BeautifulSoupimport timeimport jsonimport os#登陆知乎url = 'http://www.zhihu.co
2016-05-16 18:53:51
653

原创 零基础写python爬虫之使用Scrapy框架编写爬虫
网络爬虫,是在网上进行数据抓取的程序,使用它能够抓取特定网页的HTML数据。虽然我们利用一些库开发一个爬虫程序,但是使用框架可以大大提高效率,缩短开发时间。Scrapy是一个使用Python编写的,轻量级的,简单轻巧,并且使用起来非常的方便。使用Scrapy可以很方便的完成网上数据的采集工作,它为我们完成了大量的工作,而不需要自己费大力气去开发。首先先要回答一个问题。问:把网站装进爬虫里,
2016-05-10 10:01:50
4986

原创 intent.putExtra()方法参数
【putExtra("A",B)中,AB为键值对,第一个参数为键名,第二个参数为键对应的值。顺便提一下,如果想取出Intent对象中的这些值,需要在你的另一个Activity中用getXXXXXExtra方法,注意需要使用对应类型的方法,参数为键名】要不我举个例子吧,,大家注意注释的地方哈,源码在下面。来建第一个Activity:MyIntentpubl
2016-02-29 15:57:38
850

原创 python的zip函数
zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。具体意思不好用文字来表述,直接看示例:1.示例1:x = [1, 2, 3]y y= [4, 5, 6]z z= [7, 8, 9]xyz xyz= zip(x, y, z)print xyz运行的结果是:[(1, 4, 7), (2, 5, 8), (3, 6, 9)]从这个结果
2016-02-26 15:52:20
537

原创 Android开发笔记之:Handler Runnable与Thread的区别详解
在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限。下面看例子:package org.thread.demo; class MyThread extends T
2016-01-27 21:50:29
575

原创 String \StringBuffer \StringBuilder之间的区别
最近学习到StringBuffer,心中有好些疑问,搜索了一些关于String,StringBuffer,StringBuilder的东西,现在整理一下。关于这三个类在字符串处理中的位置不言而喻,那么他们到底有什么优缺点,到底什么时候该用谁呢?下面我们从以下几点说明一下 1.三者在执行速度方面的比较:StringBuilder > StringBuffer > St
2016-01-27 20:05:13
402

原创 安卓蓝牙入门二-------整合版本
本人目前刚接触蓝牙不久,由于自己摸索走了很多弯路,现在摸索出来了一点东西,希望写下来对大家,特别是新手有点帮助废话不多说直接上代码: android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >
2016-01-24 14:22:51
1122

转载 安卓蓝牙通信
转自:http://blog.youkuaiyun.com/yudajun/article/details/8362916公司项目涉及蓝牙通信,所以就简单的学了学,下面是自己参考了一些资料后的总结,希望对大家有帮助。以下是开发中的几个关键步骤:1,首先开启蓝牙2,搜索可用设备3,创建蓝牙socket,获取输入输出流4,读取和写入数据5,断开连接关闭蓝牙下面是一个
2016-01-23 12:59:52
1037

原创 ListView-Arrayadapter
ListView用多了,自然而然想去抽时间总结一下,毕竟copy来copy去,久而久之也会也淡忘,勒个时候再去花时间去阅读自己写过的代码,太不明智,也费时间。在这里我把用过的ListView都拿出来与大家分享。持续更新附源码。 一:分别继承于Activity,ListActivity,ListView使用 1)继承于Activity写法 Java代码
2016-01-23 10:50:43
480

原创 安卓蓝牙篇-适合入门
1.什么是蓝牙 Bluetooth是目前使用的最广泛的无线通讯协议之一 主要针对短距离设备通讯(10米) 常用于连接耳机、鼠标和移动通讯设备等 2.发现周围蓝牙设备 BluetoothAdapter:代表了本地的蓝牙适配器 BluetoothDevice:代表一个远程的蓝牙设备 扫描已配对的蓝牙设备方法: 1.在AndroidManifes
2016-01-23 10:09:02
536

原创 安卓状态栏通知Notification,NotificationManager详解
在Android系统中,发一个状态栏通知还是很方便的。下面我们就来看一下,怎么发送状态栏通知,状态栏通知又有哪些参数可以设置?首先,发送一个状态栏通知必须用到两个类: NotificationManager 、 Notification。NotificationManager : 是状态栏通知的管理类,负责发通知、清楚通知等。NotificationManager 是一
2015-12-30 09:56:07
959

翻译 安卓底部菜单栏的实现
虽然网上有很多底部菜单栏的实现方式,但是实现方式各种各样,很多也不符合自己的口味,所以还是总结下底部菜单栏的实现方式,以便以后方便查询使用实现方式一:通过TabWidget实现这种方式主要是在布局中将TabWidget标签嵌套在RelativeLayout中,并且在TabWidget标签中中设置 android:layout_alignParentBottom="true"
2015-12-27 21:28:21
2116

原创 layoutInflater的用法2
在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化;而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。具体作用:1、对于一个没有被载入或者想要动态载入的界面,都需要使用Layou
2015-12-27 16:48:12
374

转载 ListView中convertview和ViewHolder的区别
LsitView和Adapter参考:http://www.cnblogs.com/xiaowenji/archive/2010/12/08/1900579.html工作原理: 1.ListView针对List中每个item,要求adapter给我一个视图(getView) 2.一个新的视图被返回并显示如果我们有上亿个item要显示怎么办?为每个项目创建一个新视图?NO
2015-12-27 15:35:37
852

原创 Android - TabHost 选项卡功能用法详解
一. TabHost介绍 TabHost组件可以在界面中存放多个选项卡, 很多软件都使用了改组件进行设计; 1. TabHost常用组件 TabWidget : 该组件就是TabHost标签页中上部 或者 下部的按钮, 可以点击按钮切换选项卡;TabSpec : 代表了选项卡界面, 添加一个TabSpec即可添加到TabHost中;--
2015-12-27 14:56:30
1455

原创 PopupWindow与PopupMenu的用法
PopupWindow与PopupMenu的用法PopupMenuPopupWindowPopupWindow和PopupMenu的功能都是为了弹出一个窗体,不过PopupMenu的功能比较单一,而PopupWindow更强。PopupMenu xmlns:app="http://schemas.android.com/apk/res-auto"
2015-12-24 18:04:23
807

原创 弹出式菜单(下拉菜单)实现——PopupMenu -
PopupMenu代表弹出式菜单,它会在指定组件上弹出PopupMenu,默认情况下,PopupMenu会显示在该组件的下方或上方。PopupMenu可增加多个菜单项,并可为菜单项增加子菜单。使用PopupMenu创建菜单的步骤非常简单,只要如下步骤即可。调用new PopupMenu(Context context,View anchor)创建下拉菜单,anchor代表要
2015-12-24 16:58:25
8572

原创 ListView性能优化之convertView和ViewHolder
最近碰到的面试题中经常会碰到问"ListView的优化"问题。所以就拿自己之前写的微博客户端的程序做下优化。自己查了些资料,看了别人写的博客,得出结论,ListView优化大致从以下几个角度:1.复用已经生成的convertView;2.添加viewHolder类;3.缓存数据(图片缓存);4.分页加载。一、复用convertView首先讲下ListView的原理:
2015-12-22 15:58:42
469
推荐系统实践-项亮
2017-08-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人