本教程由“做全栈攻城狮”原创首发,本人大学生一枚平时还需要上课,但尽量每日更新文章教程。一方面把我所习得的知识分享出来,希望能对初学者有所帮助。另一方面总结自己所学,以备以后查看。

可能看着文章很短,但大家想想高考时800字的作文用了多长时间。字都是一个字一个字的码出来的,也需要很多精力。

非常需要各位的支持,哪怕点个赞,评论一下。更多技术方向的文章可以关注我。力求写出高质量文章。帮助更多学习技术的人。

本人大学生一枚,如各位有Asp.Net和安卓开发方向的兼职,可以联系微信:cxx7177.感谢您。

一、项目描述:

作为资深电影迷,最新的电影是什么?热门电影又是啥?这些问题一直困扰着我。恰逢休息无聊,想找个电影看一下,而众所周知各大搜索引擎设有热搜榜单。我们可以通过榜单进行查看最热热搜电影。而作为程序员,总得把学得的技术应用一下。当然这段时间程序员抢月饼事件,却吓得除了一阵冷汗。当然,我们做的事情是合乎道德的。不能因为我们爬了个电影热榜成为众讨的对象的。哈哈,开个玩笑。

开发爬虫程序,爬取360电影热搜榜的热门电影。地址:http://top.so.com/index?c=%E7%94%B5%E5%BD%B1。

二、所需技术点:

  1. XPath

  2. WebRequest请求

  3. Winform

  4. HTML解析器:HtmlAgilityPack DLL地址:http://htmlagilitypack.codeplex.com/

三、XPath:

1.XPath介绍:

XPath是对XML文档通过路径表达式,进行信息查找的一种语言。同样XPath支持Html,类似于javascript的形式,通过XPath,可以进行标签的获取了。配合请求逻辑。这可以堪称开发爬虫的神器。

2.XPath语法:

//定位根节点

/往下层寻找

/text()提取文本内容

/@xxx提取属性xxx的值

例如:

//ul/li[@id="test"]/text() -------表示根节点下面ul下id为test的li标签的文本内容

3.WebRequest 进行Get请求:

我这里写了个helper的Get方法供以参考:

四、使用XPath提取热门电影:

  1. 新建Winform项目,如图添加如下控件:

    做点调整:

  2. 为了使用HtmlAgilityPack我们先进行引用。访问:http://htmlagilitypack.codeplex.com/并下载。引用。

  3. 为了方便使用,添加一个根据XPATH获取筛选的字符串的方法:

  4. 书写XPath字符串:(根据插件获取XPath,然后修改一下)

    多获取几个电影标题,如图:

    即可找到规律,所以最终的XPath:

  5. 抓爬热门电影,按钮点击事件:

五、最后扩充

这只是简单的获取第一页的热门电影情况,仍然可以通过以上的方式,爬取下方换页按钮的链接,进行跳转,抓取更多的电影名称。

爬虫神器XPath,程序员带你免费获取周星驰等明星热门电影的更多相关文章

  1. 程序员带你十天快速入门Python,玩转电脑软件开发(四)

    本系列文章立志于从一个已经习得一门编程语言的基础之上,全面介绍Python的相关开发过程和相关经验总结.本篇文章主要是基于上一篇的程序员带你十天快速入门Python,玩转电脑软件开发(三)的基础之上, ...

  2. 程序员带你学习安卓开发-XML文档的创建与解析

    这是程序员带你学习安卓开发系列教程.本文章致力于面向对象程序员可以快速学习开发安卓技术. 上篇文章:程序员带你学习安卓开发系列-Android文件存储 因知识连贯性推荐关注头条号:做全栈攻城狮.从头开 ...

  3. 程序员带你学习安卓开发系列-Android文件存储

    这是程序员带你学习安卓开发系列教程.本文章致力于面向对象程序员可以快速学习开发安卓技术. 上篇文章:.Net程序员快速学习安卓开发-布局和点击事件的写法 主要讲解了布局和点击事件的写法. 上篇文章补充 ...

  4. 程序员带你十天快速入门Python,玩转电脑软件开发(三)

    声明:本次教程主要适用于已经习得一门编程语言的程序员.想要学习第二门语言.有梦想,立志做全栈攻城狮的你 . 如果是小白,也可以学习本教程.不过可能有些困难.如有问题在文章下方进行讨论.或者添加QQ群5 ...

  5. 程序员带你十天快速入门Python,玩转电脑软件开发(二)

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...

  6. 程序员带你十天快速入门Python,玩转电脑软件开发(一)

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...

  7. 程序员带你学习安卓开发,十天快速入-对比C#学习java语法

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...

  8. 好程序员带你了解一下HTTPS和SSL/TLS协议的背景与基础

    >> 相关背景知识 要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义 大致了解 HTTP 和 TCP 的关系(尤其 ...

  9. <转载>国外程序员推荐的免费编程书籍资源

    一.George Stocker 提供了一大串,分类如下: How to Design Programs: An Introduction to Computing and Programming 2 ...

随机推荐

  1. NOI2011道路修建

    2435: [Noi2011]道路修建 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1974  Solved: 550[Submit][Status ...

  2. [swustoj 594] Maximum Tape Utilization Ratio

    Maximum Tape Utilization Ratio(0594) Time limit(ms): 1000 Memory limit(kb): 65535 Submission: 467 Ac ...

  3. zookeeper使用和原理探究(一)(转)

    zookeeper介绍zookeeper是一个为分布式应用提供一致性服务的软件,它是开源的Hadoop项目中的一个子项目,并且根据google发表的<The Chubby lock servic ...

  4. linux | mac 设置远程主机别名

    管理几台不同的服务器,要上线,发布,测试, 每次输入 ip 感觉好傻. 在 ~/.ssh/ 目录下如果有config 文件,修改一下就好,如果没有,创建一个. # vim ~/.ssh/config ...

  5. poj 2892 Tunnel Warfare(线段树)

    Tunnel Warfare Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 7499   Accepted: 3096 D ...

  6. C++ 类T T t;构造时分配的内存在静态数据区 T t=new T()分配的内存在堆 这样说对吗

    C++  类T   T t;构造时分配的内存在静态数据区   T t=new T()分配的内存在堆

  7. Storm系列(十二)架构分析之Worker-心跳信息处理

    Worker通过worker-data方法定义了一个包含很多共享数据的映射集合,Worker中很多方法都依赖它 mk-worker 功能: 创建对应的计时器.Executor.接收线程接收消息   方 ...

  8. HW5.9

    public class Solution { public static void main(String[] args) { System.out.printf("%s\t%s\t%s\ ...

  9. HDOJ-ACM1018(JAVA)

    题意: 求n!的位数,0<n<10^7 思路:log10(1)+log10(2)+···+log10(n) = log10(n!)   [题目的考点就在这吧] 解题: import jav ...

  10. 在YII中使用Redis等缓存

    Yii AR 单行数据-自动缓存机制 | LOCKPHP Yii AR 单行数据-自动LOG机制 CActiveRecordBehavior进阶 | LOCKPHP 缓存 - 权威指南 - Yii F ...