Less.Html 示例四:与 WebBrowser 的配合使用,以抓取京东手机价格为例

原创 2017年06月29日 11:57:11

很多网页使用了 ajax 技术,浏览器地址栏的链接并不返回全部的内容,而是在加载文档之后,采用异步的请求获取对应的内容。京东商城的商品价格就是 ajax 获取的。这样做有可能是为了优化速度,也有可能是为了防止抓取,或者两者都有。这种网页单纯用 WebClient 无法得到和浏览器访问相同的内容,需要使用 WebBrowser 控件,这个控件相当于在程序中嵌入了一个 IE 浏览器,可以运行网页的脚本,也就可以得到 ajax 请求的内容了。

我写了一个示例四,演示了 Less.Html 和 WebBrowser 的搭配使用。之所要使用 Less.Html,是因为 WebBrowser 只能得到网页的 HTML DOM,DOM 的方法对于获取指定元素的内容是不太方便的,利用 Less.Html 的 css 选择器,可以快速地获取你想要的内容。

源代码:GitHub    码云

这个示例有两个要点,一个是异步线程去检查 ajax 是否完成加载,之所以要使用异步线程,是因为不能阻塞 WebBrowser 的线程;第二个就是使用 Less.Html 的 css 选择器快速获取内容的部分了。这是可以直接用在实际的项目中的,所以我选择了抓取京东手机价格为例:

//获取页面所有的商品
var sku = q(".j-sku-item");
foreach (Element i in sku)
{
    //商品名称
    string name = q(i).find(
        ".p-name a em").text();

    //商品价格
    string price = q(i).find(
        ".p-price .J_price:first").text();
}

代码中使用了三次 css 选择器,作用如注释所示。相比 WebBrowser 的 DOM 方法,搭配 Less.Html 可以大幅度地提升开发速度。

我在示例中隐藏了 Form,是通过 Console 去开进程调用 Form,然后把 Form 的输出重定向到 Console 的,在程序的运行过程中感觉不到 WebBrowser 的存在。运行示例需要把 Test 这个控制台项目设为启动项目,运行结果如下:

相关文章推荐

jquery.tipsy 提示显示多行的提示方法,截取字符串的方法,高亮度显示

 

『ANDROID』IOS、Android、WP移动平台浏览器下常用字体支持度研究

原文地址:http://www.elonglau.com/119.html 做了近一年的无线项目,总觉得少了点什么,对,是总结和研究,一直在追随前人的脚步,在他人的经验中获取认知,恐...

京东商城手机频道商品价格信息的抓取

在做页面解析时,最大难度在于对动态数据的抓取,特别是由ajax加载的内容。目前对这方面的处理还没很好的解决方案,,虽然有htmlunit之类的模拟浏览器运行工具包,但是其效率以及准确性远远不能满足实际...
  • km1218
  • km1218
  • 2014年11月19日 16:52
  • 2255

【Python爬虫】按时爬取京东几类自营手机型号价格参数并存入数据库

一、最近刚好想换手机,然后就想知道京东上心仪的手机价格如何,对比手机价格如何,以及相应的历史价格,然后就用Python requests+MySQLdb+smtplib爬取相关的数据二、关于实现的主要...

抓取京东价格源码

  • 2017年11月18日 21:11
  • 109KB
  • 下载

python抓取京东商城的商品名称和价格

突然心血来潮想抓一个京东的商品价格,突然发现网页的源码里没有价格这一项,只有商品的编号,网上说是显示的同事js从数据库里取出商品价格,放在页面上,那么我只能模拟请求了。哇咔咔,记得去你给京东投简历之后...

Python爬虫(一)京东商品价格及详情页抓取

这是一个以http://item.jd.com/2957726.html为例的单网页抓取案例 import urllib.request; #载入urllib.request,用于获取页面html源...
  • maxca
  • maxca
  • 2016年06月30日 10:54
  • 3285

html5仿京东手机WAP商城网站模板

  • 2016年02月26日 14:09
  • 662KB
  • 下载

京东价格监控软件开发技术探讨三:使用C#模拟京东登录

杀京东 做最走心的京东价格监控软件 免费开源的价格监控软件 欢迎加入QQ群415014949一起讨论 京东模拟登录步骤 第一步:获取登录页面基础值 第二步:判断是否需要验证码 第三步:拼装提交信息 ...
  • 36
  • 36
  • 2016年02月02日 12:46
  • 2471

silverlight 使用WebBrowser控件,浏览器模式下内嵌HTML

本人经验: 选中截图红圈圈中区域即可。 上述操作无效时,请使用以下引用文章:         在Silverlight 5 版本中,已经支持浏览器模式...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Less.Html 示例四:与 WebBrowser 的配合使用,以抓取京东手机价格为例
举报原因:
原因补充:

(最多只允许输入30个字)