c# 爬取优酷电影信息(1)

爬虫的制作主要分为三个方面
1、加载网页结构
2、解析网页结构,转变为符合需求的数据实体
3、保存数据实体(数据库,文本等)

在实际的编码过程中,找到了一个好的类库“HtmlAgilityPack”。
介绍:
官网:http://html-agility-pack.net/?z=codeplex
Html Agility Pack源码中的类大概有28个左右,其实不算一个很复杂的类库,但它的功能确不弱,为解析DOM已经提供了足够强大的功能支持,可以跟jQuery操作DOM媲美)
使用说明:
Html Agility Pack(XPath 定位),在实际使用过程中,发现有部分内容如果通过Css进行定位会比XPath更加方便,所以通过查找找到了另外一个CSS的解析了类库 ScrapySharp(Css 定位)

整理:
Nuget包需要引用的库
1、Html Agility Pack(XPath 定位)
2、ScrapySharp(Css 定位)

代码下载地址:

https://github.com/happlyfox/FoxCrawler

第一点——加载网页结构

Html Agility Pack封装了加载内容的方法,使doc.Load(arguments),具有多种重载方式,以下列举官网的三个实例

 /// <summary>
 /// 加载网页结构
 /// </summary>
 private static void LoadDocment()
 {
  // 从文件中加载
  var docFile = new HtmlDocument();
  docFile.Load("file path");

  // 从字符串中加载
  var docHtml = new HtmlDocument();
  docHtml.LoadHtml("html");

  // 从网站中加载
  var url = "http://html-agility-pack.net/";
  var web = new HtmlWeb();
  var docWeb = web.Load(url);
 }

第二点——解析网页结构,转变为符合需求的数据实体

 /// <summary>
 /// 解析网页结构
 /// </summary>
 private static YouKu ParsingWebStructure()
 {
 /*选用优酷片库列表
  地址:http://list.youku.com/category/show/c_96_s_1_d_1_p_{index}.html
 */

 //首先加载web内容
 var url = "http://list.youku.com/category/show/c_96_s_1_d_1_p_1.html";
 var web = new HtmlWeb();
 var doc = web.Load(url);

 //输出WebHtml内容
 //Console.WriteLine(doc.DocumentNode.InnerHtml);

 /* HtmlAgilityPack 解析方式官网提供的有俩种示例*/
 //1、 With XPath
 var value = doc.DocumentNode.SelectSingleNode("//*[@id='total_videonum']").Attributes["id"].Value;
 var resultCount = doc.DocumentNode.SelectSingleNode("//*[@id='total_videonum']").InnerText;

 Console.WriteLine($"id='{value}' 筛选结果:{resultCount}个");
 // 2、With LINQ
 var linqNodes = doc.DocumentNode.SelectSingleNode("//*[@id='filterPanel']/div[2]/ul").Descendants("li").ToList();

 Console.WriteLine("电影产地:");
 List<string> videoCountry = new List<string>();
 foreach (var node in linqNodes)
 {
  videoCountry.Add(node.InnerText);
  Console.Write($"{node.InnerText} \t");
 }

 //3、使用ScrapySharp进行Css定位
 var cssNodes = doc.DocumentNode.CssSelect("#filterPanel > div > label");
 Console.WriteLine();

 List<string> videoType = new List<string>();
 foreach (var node in cssNodes)
 {
  videoType.Add(node.InnerText);
  Console.Write($"{node.InnerText} \t");
 }

 //构造实体
 YouKu model = new YouKu()
 {
  id = value,
  videoNum = int.Parse(resultCount),
  videoCountry = videoCountry,
  videoType = videoType
 };

 return model;
 }

public class YouKu
{
 public string id { get; set; }

 public int videoNum { get; set; }

 public List<string> videoCountry { get; set; }
 public List<string> videoType { get; set; }
}

第三点——保存数据实体,转变为符合需求的数据实体

 /// <summary>
 /// 保存数据实体
 /// </summary>
 private static void SavaData()
 {
 var model = ParsingWebStructure();
 var path = "youku.txt";

 if (!File.Exists(path))
 {
  File.Create(path);
 }

 File.WriteAllText(path, getJsonByObject(model));
 }

 private static string getJsonByObject(Object obj)
 {
 //实例化DataContractJsonSerializer对象,需要待序列化的对象类型
 DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
 //实例化一个内存流,用于存放序列化后的数据
 MemoryStream stream = new MemoryStream();
 //使用WriteObject序列化对象
 serializer.WriteObject(stream, obj);
 //写入内存流中
 byte[] dataBytes = new byte[stream.Length];
 stream.Position = 0;
 stream.Read(dataBytes, 0, (int)stream.Length);
 //通过UTF8格式转换为字符串
 return Encoding.UTF8.GetString(dataBytes);
 }

第四点——main

 static void Main(string[] args)
 {
 ///爬虫的制作主要分为三个方面
 ///1、加载网页结构
 ///2、解析网页结构,转变为符合需求的数据实体
 ///3、保存数据实体(数据库,文本等)

 /*
  * 在实际的编码过程中,找到了一个好的类库“HtmlAgilityPack”。
  * 介绍:
  * 官网:http://html-agility-pack.net/?z=codeplex
  * Html Agility Pack源码中的类大概有28个左右,其实不算一个很复杂的类库,但它的功能确不弱,为解析DOM已经提供了足够强大的功能支持,可以跟jQuery操作DOM媲美)
  * 使用说明:
  * Html Agility Pack(XPath 定位),在实际使用过程中,发现有部分内容如果通过Css进行定位会比XPath更加方便,所以通过查找找到了另外一个CSS的解析了类库 ScrapySharp(Css 定位)
  * 整理:
  * Nuget包需要引用的库
  * 1、Html Agility Pack(XPath 定位)
  * 2、ScrapySharp(Css 定位)
  */

 //第一点——加载网页结构,Html Agility Pack封装了加载内容的方法,使用doc.Load(arguments),具有多种重载方式,以下列举官网的三个实例
 //LoadDocment();

 //第二点——解析网页结构,转变为符合需求的数据实体
 //ParsingWebStructure();

 //第三点——保存数据实体,转变为符合需求的数据实体
 SavaData();
 Console.Read();
 }

以上就是c# 爬取优酷电影信息(1)的详细内容,更多关于c# 爬取优酷电影信息的资料请关注我们其它相关文章!

(0)

相关推荐

  • c# 爬取优酷电影信息(2)

    上一章节中我们实现了对优酷单页面的爬取,简单进行回顾一下,使用HtmlAgilityPack库,对爬虫的爬取一共分为三步 爬虫步骤 加载页面 解析数据 保存数据 继第一篇文档后的爬虫进阶,本文章主要是对上一篇的进阶.实现的功能主要为: 1.爬取电影类别列表 2.循环每个类别的电影信息,对每个类别的信息分页爬取 3.爬取的数据保存到数据库中 一.爬取电影类别列表 使用Chrome浏览器,F12,找到当前位置,得到当前位置的Xpath.我们需要的数据是电影的类别编码和电影类别名称. 规则分析: XP

  • C# 爬虫简单教程

    1.使用第三方类库 HtmlAgilityPack 官方网址:https://html-agility-pack.net/?z=codeplex. // From File 从文件获取html信息 var doc = new HtmlDocument(); doc.Load(filePath); // From String 从字符串获取html信息 var doc = new HtmlDocument(); doc.LoadHtml(html); // From Web 从网址获取html信息

  • c# Selenium爬取数据时防止webdriver封爬虫的方法

    背景 大家在使用Selenium + Chromedriver爬取网站信息的时候,以为这样就能做到不被网站的反爬虫机制发现.但是实际上很多参数和实际浏览器还是不一样的,只要网站进行判断处理,就能轻轻松松识别你是否使用了Selenium + Chromedriver模拟浏览器.其中 window.navigator.webdriver 就是很重要的一个. 问题窥探 正常浏览器打开是这样的 模拟器打开是这样的 ChromeOptions options = null; IWebDriver driv

  • c#爬虫爬取京东的商品信息

    前言 在一个小项目中,需要用到京东的所有商品ID,因此就用c#写了个简单的爬虫. 在解析HTML中没有使用正则表达式,而是借助开源项目HtmlAgilityPack解析HTML. 下面话不多说了,来一起看看详细的介绍吧 一.下载网页HTML 首先我们写一个公共方法用来下载网页的HTML. 在写下载HTML方法之前,我们需要去查看京东网页请求头的相关信息,在发送请求时需要用到. public static string DownloadHtml(string url, Encoding encod

  • 用C#做网络爬虫的步骤教学

    如今代码圈很多做网络爬虫的例子,今天小编给大家分享的是如何用C#做网络爬虫.注意这次的分享只是分享思路,并不是一整个例子,因为如果要讲解一整个例子的话,牵扯的东西太多. 1.新建一个控制台程序,这个相信大家都懂的 2.建好以后,打开主程序文件,导入发送http请求的库,这里用的是System.NET 3.编写发送http请求的方法,如下所示:首先实例化WebClient,然后设置头信息,其次转化参数为字节数据,最后调用UploadData方法进行发送. 4.接下来调用我们写的发送http请求的方

  • C# 利用代理爬虫网页的实现方法

    C# 利用代理爬虫网页 实现代码: // yanggang@mimvp.com // http://proxy.mimvp.com // 2015-11-09 using System; using System.IO; using System.Net; using System.Text; namespace ConsoleApplication1 { class Program { public static void Main(string[] args) { System.Net.We

  • C#爬虫通过代理刷文章浏览量

    1.如何维护代理IP库? 想要使用代理IP,那就必须有一个一定数量.足够有效的代理ip库,在学习阶段,随便玩玩那就只能从免费的代理IP网站上抓取,没有一定数量的代理刷文章流浪量非常慢,首先就是要维护好自己的代理Ip库 之前用过的西刺代理.66ip比较靠谱,西祠好像有反扒,遇到过一次,不知道是西祠网站的问题还是反扒的策略,这两个网站每分钟抓取的能用的代理大概有2,3个,这已经算的上比较客观的了, data5u.快代理.ip3366网页端更新的非常少,而且有效性比较低,快代理抓取网页还必须设置Use

  • C#实现的优酷真实视频地址解析功能(2014新算法)

    序:优酷之前更新了次算法(很久之前了,呵呵...),故此很多博客的解析算法已经无法使用.很多大牛也已经更新了新的解析方法.我也在此写篇解析过程的文章.(本文使用语言为C#) 由于优酷视频地址时间限制,在你访问本篇文章时,下面所属链接有可能已经失效,望见谅. 例:http://v.youku.com/v_show/id_XNzk2NTI0MzMy.html 1:获取视频vid 在视频url中标红部分.一个正则表达式即可获取. 复制代码 代码如下: string getVid(string url)

  • c# 爬取优酷电影信息(1)

    爬虫的制作主要分为三个方面 1.加载网页结构 2.解析网页结构,转变为符合需求的数据实体 3.保存数据实体(数据库,文本等) 在实际的编码过程中,找到了一个好的类库"HtmlAgilityPack". 介绍: 官网:http://html-agility-pack.net/?z=codeplex Html Agility Pack源码中的类大概有28个左右,其实不算一个很复杂的类库,但它的功能确不弱,为解析DOM已经提供了足够强大的功能支持,可以跟jQuery操作DOM媲美) 使用说明

  • python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中

    爬取TOP500的音乐信息,包括排名情况.歌曲名.歌曲时间. 网页版酷狗不能手动翻页进行下一步的浏览,仔细观察第一页的URL: http://www.kugou.com/yy/rank/home/1-8888.html 这里尝试将1改为2,再进行浏览,恰好是第二页的信息,再改为3,恰好是第三页的信息,多次尝试发现不同的数字即为不同的页面.因此只需更改home/后面的数字即可.由于每页显示的为22首歌曲,所以总共需要23个URL. import requests from bs4 import B

  • Python爬虫入门教程01之爬取豆瓣Top电影

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 基本开发环境 Python 3.6 Pycharm 相关模块的使用 requests parsel csv 安装Python并添加到环境变量,pip安装需要的相关模块即可. 爬虫基本思路 一.明确需求 爬取豆瓣Top250排行电影信息 电影名字 导演.主演 年份.国家.类型 评分.评价人数 电影简介 二.发送请求 Python中的大量开源的模块使得编码变的特别简单,我们写爬虫第一个要了解的模

  • Java基于WebMagic爬取某豆瓣电影评论的实现

    目的 搭建爬虫平台,爬取某豆瓣电影的评论信息. 准备 webmagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发.webmagic的核心非常简单,但是覆盖爬虫的整个流程,也是很好的学习爬虫开发的材料. 下载WebMagic源码,或Maven导入,或Jar包方式导入.  码云地址:https://gitee.com/flashsword20/webmagic 试运行 搭建好后打开项目, 在 us.codecraft.webmagic.processor

  • python scrapy拆解查看Spider类爬取优设网极细讲解

    目录 拆解 scrapy.Spider scrapy.Spider 属性值 scrapy.Spider 实例方法与类方法 爬取优设网 Field 字段的两个参数: 拆解 scrapy.Spider 本次采集的目标站点为:优设网 每次创建一个 spider 文件之后,都会默认生成如下代码: import scrapy class UiSpider(scrapy.Spider): name = 'ui' allowed_domains = ['www.uisdc.com'] start_urls =

  • Python探索之爬取电商售卖信息代码示例

    网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本. 下面有一个示例代码,分享给大家: #! /usr/bin/env python # encoding = 'utf-8'# Filename: spider_58center_sth.py from bs4 import BeautifulSoup import time import requests url_58 = 'http://nj.58.c

  • python爬取cnvd漏洞库信息的实例

    今天一同事需要整理http://ics.cnvd.org.cn/工控漏洞库里面的信息,一看960多个要整理到什么时候才结束. 所以我决定写个爬虫帮他抓取数据. 看了一下各类信息还是很规则的,感觉应该很好写. but这个网站设置了各种反爬虫手段. 经过各种百度,还是解决问题了. 设计思路: 1.先抓取每一个漏洞信息对应的网页url 2.获取每个页面的漏洞信息 # -*- coding: utf-8 -*- import requests import re import xlwt import t

  • Python进阶之使用selenium爬取淘宝商品信息功能示例

    本文实例讲述了Python进阶之使用selenium爬取淘宝商品信息功能.分享给大家供大家参考,具体如下: # encoding=utf-8 __author__ = 'Jonny' __location__ = '西安' __date__ = '2018-05-14' ''' 需要的基本开发库文件: requests,pymongo,pyquery,selenium 开发流程: 搜索关键字:利用selenium驱动浏览器搜索关键字,得到查询后的商品列表 分析页码并翻页:得到商品页码数,模拟翻页

  • Python爬取个人微信朋友信息操作示例

    本文实例讲述了Python爬取个人微信朋友信息操作.分享给大家供大家参考,具体如下: 利用Python的itchat包爬取个人微信号的朋友信息,并将信息保存在本地文本中 思路要点: 1.利用itchat.login(),实现微信号的扫码登录 2.通过itchat.get_friends()函数获取朋友信息 代码: 本文代码只获取了几个常用的信息,更多信息可从itchat.get_friends()中取 #获取个人微信号中朋友信息 #导入itchat包 import itchat #获取个人微信号

随机推荐