说起爬虫,大家能够想起 Python 里赫赫有名的 Scrapy{:target="_blank"} 框架,
在本文中我们参考这个设计思想使用 Java 语言来实现一款自己的爬虫框(lun)架(zi)。
我们从起点一步一步分析爬虫框架的诞生过程。
继续阅读 »
Nodejs爬取蚂蜂窝文章的爬虫以及搭建第三方服务器
more
如题,本项目用Nodejs实现了对蚂蜂窝网站的爬取,并将数据储存到MongoDB中,再以Express作服务器端,Angularjs作前端实现对数据的托管。
本项目Github地址:https://github.com/golmic/mafengwo-spider
本项目线上地址: http://mafengwo.lujq.me
本文介绍其中部分的技术细节。
获取数据
打开蚂蜂窝网站,发现文章部分的数据是用Ajax获取的,包括分页也是,所以查看一下实际的请求路径,为http://www.mafengwo.cn/ajax/ajax_article.php?start=
继续阅读 »
一、引言
最早接触爬虫,是发现了一个叫做『豆瓣妹子』的网站,写了一个简单的程序可以批量下载图片。后来陆陆续续抓取过豆瓣电影,Google+,facejoking等网站。毕设的选题也是抓取新浪微博,然后分析博文的传播情况。最近一直对知乎的数据感兴趣,于是开发了Node模块zhihu-api,用于简化数据的抓取。
通常来说,所谓的爬虫,无非是通过程序来发送HTTP请求。因此理论上来说,所有浏览器能访问到的内容,都是可以通过爬虫来进行抓取的。
一般而言,我们所感兴趣的信息,只是页面中的某一部分数据,例如:某个标签的文本、链接地址、图片地址等。有些网站会提供开放的API(往往也会有很多限制),这时只需要直接请求该API,就可以拿到比较
继续阅读 »
在Scrapy框架下
more
蚂蜂窝
```Python
coding=utf-8
import json
from urlparse import urljoin
import re
import logging
import scrapy
from scrapy.http import Request
from scrapy.selector import Selector
from andaman.utils.html import html2text, parse_time
from andaman.items.qa import QAItem
from andaman.items.jieban import Ji
继续阅读 »
微博爬虫 + 社交网络图可视化
项目地址:WeiboSocialNetwork
先展示下结果再来解释代码:
首先有个R语言生成的 html
继续阅读 »
什么是 robots.txt ?
robots.txt 文件放置在网站根目录下,定义了什么样的客户端(web服务器以User-Agent识别客户端)可以访问的资源有哪些,不能访问的资源有哪些。以百度的 robots.txt 为例,如下:
继续阅读 »
前言
故事还得从头说起。乌云网挂掉之后,乌云知识库也无法访问了。曾经,在上面看到那么多优秀的安全类文章,一下子看不到了,颇觉得有点不适应。还好网上流传着民间的各种版本,于是我收集了一下,放在了Github上。这些文章只是一些html文件,并不包含页面上的图片。幸运的是,图片的域名static.wooyun.com还可以继续访问,因此有必要把这些图片也抓取下来。
Wooyun Drops 文章在线浏览
Wooyun Drops 文章在线浏览
Github: wooyun_articles
使用Nodejs下载图片
抓取图片链接的过程在此不再详述,无非就是打开每个html页面,找到其中img标签的src属性。我们拿到了这些ht
继续阅读 »
下列代码全部基于python3.4
more
``` python
import urllib.parse,urllib.request,http.cookiejar,os,xlrd,xlwt3,time,random
print ("######## 确保关闭了所有的EXCEL,运行时不要打开任何EXCEL文件 ########")
rfile = xlrd.open_workbook('read.xls')
rfile.sheet_names()
rsheet = rfile.sheet_by_name(u'Sheet1')
resultfilenum = 0
result = str(resultfilenum)
继续阅读 »
Bloom Filter是由Bloom在1970年提出的一种快速查找算法,通过多个hash算法来共同判断某个元素是否在某个集合内。可以用于网络爬虫的url重复过滤、垃圾邮件的过滤等等。
它相比hash容器的一个优势就是,不需要存储元素的实际数据到容器中去来一个个的比较是否存在。
只需要对应的位段来标记是否存在就行了,所以想当节省内存,特别适合海量的数据处理。并且由于省去了存储元素和比较操作,所以性能也比基于hash容器的高了很多。
但是由于bloom filter没有去比较元素,只通过多个hash来判断唯一性,所以存在一定的hash冲突导致误判。误判率的大小由hash函数的个数、hash函数优劣、以及存储的位空间大小共同决定。
继续阅读 »
之前在别的电脑上配置过scrapy,后来换了mac一直没有写过爬虫,今天跟着官方指南走的时候发现安装失败很久,代码里显示ImportError: No module named scrapy意识到安装可能出了一些问题。
Stackoverflow上面提到这个问题可能是由于文件命名导致的,但是我的文件命名并没有这个问题,于是就寻求别的解决办法,打算重新安装scrapy包。
继续阅读 »