本篇參考:http://tonl.iteye.com/blog/1918245
python版本:2.7 64bit window版本;
下載python:http://www.python.org/getit/
Python 2.7.5 Windows X86-64 Installer (Windows AMD64 / Intel 64 / X86-64 binary [1] -- does not include source),進行安裝:
首先編寫下面的spider.py腳本:
# -*- coding: utf-8 -*- #import urllib2 from urllib import urlopen import os import sys class Spider: """ download web site from the given file """ def __init__(self,filename,downloadPath): """ init the filename ,if the filename is not raise a error """ if not os.path.isfile(filename): print 'the given file does not exist,the program will exit' sys.exit(0) else: self.fname=filename if not os.path.isdir(downloadPath): print 'the given download path does not exist ,the programe will exit' else: self.dpath=downloadPath def download(self): """ download the web site from the given file by line """ fp=open(self.fname,'r') while True: line=fp.readline() if not line: break if 'html' in line: tempname=filter(str.isalnum,line).replace('html','.html') else: tempname=filter(str.isalnum,line)+'.html' self.download_html(line,self.dpath+'\\'+tempname) fp.close() def download_html(self,website,filename): """ download the html by the given web site and save to name """ response=urlopen(website) data=response.read() fp=file(filename,'a+') fp.write(data) fp.close() def test(): """ test program """ filename=sys.argv[1] downloadPath=sys.argv[2] spider=Spider(filename,downloadPath) spider.download() if __name__ =='__main__': test()
上面的腳本,要輸入兩個參數,一個是要下載的網頁的地址文件,格式一般如下(websites.txt):
查看本欄目
http://blog.csdn.net/fansy1990 http://www.baidu.com
另外一個參數是下載的網頁的存放地點。
然後可以在命令行運行:
python D:\\spider.py D:\\websites.txt D:\\download_tmp
然後到D盤的download_tmp下面查找下載的文件,如果找到,則說明配置正確;
最後編寫下面的java程序,需要導入jython-*.jar包(lz下載的是2.2的):
package test; import java.io.IOException; public class PyTest { /** * @param args * @throws IOException * @throws InterruptedException */ public static void main(String[] args) throws IOException, InterruptedException { String py_path="D:\\spider.py"; String websites="D:\\websites.txt"; String outDir="D:\\tmp"; // Process pr=Runtime.getRuntime().exec("python "+py_path+" "+websites+" "+outDir ); pr.waitFor(); System.out.println("done ..."); } }
運行上面的命令,需要設置eclipse中的Environment屬性,添加一個PATH變量,值是python的安裝目錄;
運行後,會提示:
*sys-package-mgr*: can't create package cache dir, *jython-2.2.jar\cachedir\packages'
這個可以不用管,不會影響程序運行。