正则表达式matches_微软.NET Core玩转爬虫系列之借助正则表达式入门篇

接下来一段时间,我会花些时间研究C#玩转爬虫的方法及其实践。

话不多说,开始吧~

一般来说:

设计并实现一个爬虫的步骤是:

模拟登录 -> 模拟发送request请求 -> 取回response数据 -> 提取所需信息并将其进行重新组织 -> 存入DB或文件中 -> 展示

3488eeb40f0c56713dc0f908d1630cc9.png

当然,有时还需要适当地应对所抓取目标站点的反爬虫策略,也就是大家常说的反反爬!

下文以抓取豆瓣音乐为例来具体说明:

比如,我们在豆瓣音乐中搜索"摇滚"后爬取相关内容,然后写入csv文件中。

目标网址是:

https://music.douban.com/tag/摇滚?start=0&type=T

2e4b3a5419a89f3aff6bf1ff9b072360.png

抓取大概分为如下几个步骤:

获取页数

  • 发请求

每一页中都可以看到总的页数,直接取第1页的就好。

 byte[] buffer = webclient.DownloadData("https://music.douban.com/tag/%E6%91%87%E6%BB%9A?start=0&type=T"); // utf-8, gb2312, gbk, utf-1......  string html = System.Text.Encoding.GetEncoding("utf-8").GetString(buffer);

借助以上两行代码,就可以看到该网址Response的HTML字符串(debug时上面一行代码中html的值)为:

a3f03677085117954581487c56a571cd.png
  • 使用正则表达式匹配到页数

我们选用模式串 ">[0-9][0-9]{0,}" 进行匹配,由于下面的页码是从第一页算起的,选最大页数就是总页数。

相应的函数GetTotalCount如下:

 private static int GetTotalCount(System.Net.WebClient webclient, int startIdx) { //html下载  /* https://music.douban.com/tag/%E6%91%87%E6%BB%9A?start=0&type=T */​ byte[] buffer = webclient.DownloadData("https://music.douban.com/tag/%E6%91%87%E6%BB%9A?start=" + startIdx + "&type=T"); // utf-8, gb2312, gbk, utf-1......  string html = System.Text.Encoding.GetEncoding("utf-8").GetString(buffer);​ MatchCollection pageCount_matches = new Regex(">[0-9][0-9]{0,}").Matches(html);​ if (pageCount_matches.Count == 0) return 0;​ string tempPageNum = pageCount_matches[pageCount_matches.Count - 1].Value; int.TryParse(tempPageNum.Replace("
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值