php+phpquery简易爬虫抓取京东商品分类
这是一个简单的php加phpquery实现抓取京东商品分类页内容的简易爬虫。phpquery可以非常简单地帮助你抽取想要的html内容,phpquery和jquery非常类似,可以说是几乎一样;如果你有jquery的基础的话你可以迅速地上手。
1、下载phpquery并置于web根目录下的phpQuery文件夹
phpquery下载:https://code.google.com/p/phpquery/downloads/list
phpquery教程可在这里查看:https://code.google.com/p/phpquery/
2、抓取程序
<?php
/*
* Created on 2015-1-29
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/ header("Content-type:text/html; charset=utf-8");
function getPage( $url )
{
$cnt = file_get_contents($url);
return mb_convert_encoding($cnt ,"UTF-8","GBK");
}
include 'phpQuery/phpQuery.php';
$url = 'http://www.jd.com/allSort.aspx';
$page = getPage($url);
//phpQuery::newDocumentHTML($page);
phpQuery::newDocumentFile($url);
$firstCate = pq('#allsort .m');
$id = 0;
foreach($firstCate as $first){
$id ++;
$topcate = pq($first)->find(".mt a");
//echo "**************************" . $topcate->text() . "**************************************</br>";
echo $id . "#";
foreach($topcate as $top){
echo pq($top)->text() . "#" . "< a href='" .pq($top)->attr("href") . "' target='_blank'>" . pq($top)->text() ."< /a>、";
}
echo "#0#1</br>";
$companies = pq($first)->find(".mc dl");
$parent_id = $id;
foreach($companies as $company)
{
$id++;
$sparent_id = $id;
echo " " . $id . "#" .pq($company)->find('dt')->text() . "#" . "< a href='" . pq($company)->find('dt a')->attr("href") . "' target='_blank'>" . pq($company)->find('dt')->text() ."< /a>#" . $parent_id ."#2<br>";
$cate = pq($company)->find('dd em a');
foreach($cate as $detail) {
$id++;
echo " " . $id . "#" .pq($detail)->text() . "#" . "< a href='". pq($detail)->attr("href") . "' target='_blank'>" . pq($detail)->text() ."< /a>#" . $sparent_id . "#3<br>";
} }
} ?>
3、运行效果

这样可以抓取京东商品分类的信息了。可以加上数据库,将数据保存在数据库中,这样可以更利于数据的保存和操作。虽然这里只是抓取京东商品的分类,如果延伸一下的话还可以抓取商品价格,好评差评等信息。这里就不一一细说了,具体问题具体解决,完全看需求。如果有需要的话还可以做成万能的,输入标签的xpath,然后得到具体的值;这纯属YY,有兴趣的可以网上找找资料,实现的方式应该也不少。
php+phpquery简易爬虫抓取京东商品分类的更多相关文章
- 基于Thinkphp5+phpQuery 网络爬虫抓取数据接口,统一输出接口数据api
TP5_Splider 一个基于Thinkphp5+phpQuery 网络爬虫抓取数据接口 统一输出接口数据api.适合正在学习Vue,AngularJs框架学习 开发demo,需要接口并保证接口不跨 ...
- 【爬虫】利用Scrapy抓取京东商品、豆瓣电影、技术问题
1.scrapy基本了解 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架.可以应用在包括数据挖掘, 信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取(更确切来说,网络抓 ...
- python制作爬虫爬取京东商品评论教程
作者:蓝鲸 类型:转载 本文是继前2篇Python爬虫系列文章的后续篇,给大家介绍的是如何使用Python爬取京东商品评论信息的方法,并根据数据绘制成各种统计图表,非常的细致,有需要的小伙伴可以参考下 ...
- asp.net mvc 抓取京东商城分类
555 asp.net mvc 抓取京东商城分类 URL:http://www.jd.com/allSort.aspx 效果: //后台代码 public ActionResult Get ...
- 爬虫技术 -- 进阶学习(七)简单爬虫抓取示例(附c#代码)
这是我的第一个爬虫代码...算是一份测试版的代码.大牛大神别喷... 通过给定一个初始的地址startPiont然后对网页进行捕捉,然后通过正则表达式对网址进行匹配. List<string&g ...
- Node.js爬虫抓取数据 -- HTML 实体编码处理办法
cheerio DOM化并解析的时候 1.假如使用了 .text()方法,则一般不会有html实体编码的问题出现 2.如果使用了 .html()方法,则很多情况下(多数是非英文的时候)都会出现,这时, ...
- python 爬虫抓取心得
quanwei9958 转自 python 爬虫抓取心得分享 urllib.quote('要编码的字符串') 如果你要在url请求里面放入中文,对相应的中文进行编码的话,可以用: urllib.quo ...
- 爬虫技术(四)-- 简单爬虫抓取示例(附c#代码)
这是我的第一个爬虫代码...算是一份测试版的代码.大牛大神别喷... 通过给定一个初始的地址startPiont然后对网页进行捕捉,然后通过正则表达式对网址进行匹配. List<string&g ...
- 如何利用Python网络爬虫抓取微信朋友圈的动态(上)
今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的API接口,所以很容易找不到门.不过不要慌 ...
随机推荐
- 百分比定位加position定位的常用布局
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- Java算法-各种题目总结
1.排列计算 /*[程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子 ...
- 【poj1088】 滑雪
http://poj.org/problem?id=1088 (题目链接) 题意 给出一个矩阵,任意选择一个起点,每次只能向周围4个格子中的值比当前格子小的格子移动,求最多能移动多少步. Soluti ...
- 【poj1010】 STAMPS
http://poj.org/problem?id=1010 (题目链接) 感到了英语深深的恶意... 题意(真的很难懂....) 第一行数字是邮票的面值,每一个数字就是一个不同的种类,哪怕面值相同. ...
- 安装最新版本的ReSharper导致原生全局搜索工具的消失问题
经过检测,是由于启用了一个插件导致的,禁用即可,如下图:
- USACO 3.2 ratios 高斯消元
题目原意很简单,就是解一个三元一次方程组 直接高斯消元解方程组,枚举最后一列的倍数(k) 注意double的精度,有很多细节需要处理 /* PROB:ratios LANG:C++ */ #inclu ...
- javascript显示实时时间
<html> <script language=Javascript> function time(){ //获得显示时间的div t_div = document.getEl ...
- Mybatis的ResultMap的使用
本篇文章通过一个实际工作中遇到的例子开始吧: 工程使用Spring+Mybatis+Mysql开发.具体的业务逻辑很重,对象之间一层一层的嵌套.和数据库表对应的是大量的model类,而和前端交互的是V ...
- MySQL中利用外键实现级联删除、更新
MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引.在创建索引的时候,可以指定在删除.更新父表时,对子表进行的相应操作 ...
- yield return 和 yield break
//yield return 返回类型必须为 IEnumerable.IEnumerable<T>.IEnumerator 或 IEnumerator<T>. static I ...