1,Java工具:
Java开发爬虫常用的工具就是httpclient和htmlparser这两个jar包了。
httpclient实际上就是模拟浏览器发送post或者get请求,这个在本博客的《开启新浪微博的门禁》中有所介绍,可以回去浏览一下。
htmlparser实际上就是解析每一个html页面,以dom树的形式来解析每一个页面。
另外值得一说的是,现在在页面系统里比较风行的ajax,这个利用传统的post,get请求,已经无能为力,因此另一工具:htmlunit应运而生,其实感觉它最初的目的是方便QA的自动化测试,而后支持了页面的局部ajax请求,以及js请求,它可以获得页面的button,然后模拟用户点击button的请求。
2,Python工具:
urllib,urllib2,request这三个包,见名思议,就知道是进行url访问的,在我的使用经历来看,request这个包最好用。
贴点以前写的代码:
import urllib2
req = urllib2.Request('http://www.voidspace.org.uk')
response = urllib2.urlopen(req)
the_page = response.read()
对于非常普通的网页,你就拿下来了,那么解析吧,这就是beautifulsoup这个包的事情了,类似于htmlparser这个jar包。
import urllib2
url = 'http://www.someserver.com/cgi-bin/register.cgi'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values = {'name' : 'Michael Foord',
'location' : 'Northampton',
'language' : 'Python' }
headers = { ‘User-Agent’ : user_agent }
data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
the_page = response.read()
当然,有时你不得不封装一些信息,类似于上面。
对了,无论是在httpclient还是在urllib2里面,都嵌入了开发者的302重定向思维,有时候,你不得不自己重写一下:
class RedirectHandler(urllib2.HTTPRedirectHandler):
def http_error_301(self, req, fp, code, msg, headers):
print("301")
pass
def http_error_302(self, req, fp, code, msg, headers):
print("302")
pass
这儿,再广告一下scriapy这个Python下的爬虫框架:
Ubuntu下scrapy的安装:
http://installion.co.uk/ubuntu/saucy/universe/p/python-scrapy/cn/install.html
开源python网络爬虫框架Scrapy
http://lujiesky.blog.51cto.com/332319/1328176