
Java中支持的爬虫框架有很多,比如WebMagic、Spider、Jsoup等。
Jsoup拥有十分方便的api来处理html文档,比如参考了DOM对象的文档遍历方法,参考了CSS选择器的用法等等,因此我们可以使用Jsoup快速地掌握爬取页面数据的技巧。
2、快速开始
1)分析HTML页面,明确哪些数据是需要抓取的
2)使用HttpClient读取HTML页面
HttpClient是一个处理Http协议数据的工具,使用它可以将HTML页面作为输入流读进java程序中.
3)使用Jsoup解析html字符串
通过引入Jsoup工具,直接调用parse方法来解析一个描述html页面内容的字符串来获得一个Document对象。该Document对象以 *** 作DOM树的方式来获得html页面上指定的内容。
3、保存爬取的页面数据
1)保存普通数据到数据库中
将爬取的数据封装进实体Bean中,并存到数据库内。
2)保存图片到服务器上
直接通过下载图片的方式将图片保存到服务器本地。
HTML是无法读取数据库的,HTML是页面前端脚本语言,要想从HTML网页中获取SQL数据库里的数据,需要借助JSP或ASP或PHP或RUBY等语言来实现。
SQL数据库的数据体系结构基本上是三级结构,但使用术语与传统关系模型术语不同。在SQL中,关系模式(模式)称为“基本表”(base table);存储模式(内模式)称为“存储文件”(stored file);子模式(外模式)称为“视图”(view);元组称为“行”(row);属性称为“列”(column)。
扩展资料
SQL语言的组成:
1、一个SQL数据库是表(Table)的集合,它由一个或多个SQL模式定义。
2、一个SQL表由行集构成,一行是列的序列(集合),每列与行对应一个数据项。
3、一个表或者是一个基本表或者是一个视图。基本表是实际存储在数据库的表,而视图是由若干基本表或其他视图构成的表的定义。
4.一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。每个存储文件与外部存储上一个物理文件对应。
5.用户可以用SQL语句对视图和基本表进行查询等 *** 作。在用户角度来看,视图和基本表是一样的,没有区别,都是关系(表格)。
6.SQL用户可以是应用程序,也可以是终端用户。SQL语句可嵌入在宿主语言的程序中使用,宿主语言有FORTRAN,COBOL和Ada语言等。
参考资料:百度百科▬SQL数据库
给一个例子你看看吧.if($pro_list_contents=@file_get_contents('http://www.phoenix-luxury.com/louis-vuitton-c-82.html'))
{
preg_match_all("/<td width=\"50%\" valign=\"top\">(.*)<td width=\"10\"><img src=\"images\/spacer.gif\"/isU", $pro_list_contents, $pro_list_contents_ary)
for($i=0$i<count($pro_list_contents_ary[1])$i++)
{
preg_match_all("/<a href=\"(.*)\"><img src=\"(.*)\".*<span>(.*)<\/span>/isU", $pro_list_contents_ary[1][$i], $url_img_price)
$url=addslashes($url_img_price[1][0])
$img=str_replace(' ', '20%', trim('http://www.phoenix-luxury.com/'.$url_img_price[2][0]))
$price=(float)str_replace('$', '', $url_img_price[3][0])
preg_match_all("/<a class=\"ml1\" href=\".*\">(.*)<\/a>/isU", $pro_list_contents_ary[1][$i], $proname_ary)
$proname=addslashes($proname_ary[1][0])
include("inc/db_connections.php")
$rs=mysql_query("select * from pro where Url='$url' and CateId='{$cate_row['CateId']}'")//是否已经采集了
if(mysql_num_rows($rs))
{
echo "跳过:{$url}<br>"
continue
}
$basedir='/u_file/pro/img/'.date('H/')
$save_dir=Build_dir($basedir)//创建目录函数
$ext_name = GetFileExtName( $img )//取得图片后辍名
$SaveName = date( 'mdHis' ) . rand( 10000, 99999 ) . '.' . $ext_name
if( $get_file=@file_get_contents( $img ) )
{
$fp = @fopen( $save_dir . $SaveName, 'w' )
@fwrite( $fp, $get_file )
@fclose( $fp )
@chmod( $save_dir . $SaveName, 0777 )
@copy( $save_dir . $SaveName, $save_dir . 'small_'.$SaveName )
$imgpath=$basedir.'small_'.$SaveName
}
else
{
$imgpath=''
}
if($pro_intro_contents=@file_get_contents($url))
{
preg_match_all("/<\/h1>(.*)<\/td><\/tr>/isU", $pro_intro_contents, $pro_intro_contents_ary)
$p_contents=addslashes(str_replace('src="', 'src="http://www.phoenix-luxury.com', $pro_intro_contents_ary[1][0]))
$p_contents=SaveRemoteImg($p_contents, '/u_file/pro/intro/'.date('H/'))//把远程html代码里的图片保存到本地
}
$t=time()
mysql_query("insert into pro(CateId, ProName, PicPath_0, S_PicPath_0, Price_0, Contents, AddTime, Url) values('{$cate_row['CateId']}', '$proname', '$imgpath', '$img', '$price', '$p_contents', '$t', '$url')")
echo $url.$img.$cate."<br>\r\n"
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)