抓取csdn的数据

本文介绍了如何抓取CSDN论坛的特定页面数据,通过分析HTML结构并使用正则表达式进行匹配。虽然遇到正则表达式不熟练和未开启多线程采集导致的问题,但已展示了抓取帖子内容的基本流程。后续可以通过优化正则和添加多线程来提升效率。
摘要由CSDN通过智能技术生成

如有不明白的地方欢迎加QQ群14670545 探讨

代码质量不行,后面采集起来卡,原因是正则我太菜了,没有开多线程采集。下面我举例:

目标页面是http://bbs.csdn.net/recommend_tech_topics,有图有真相:


看看采集后的效果:


下面是采集到的每个帖子楼主的内容以及一些简单的显示。图片之所以没有显示出来,因为csdn是用的一个专门的图片服务器,设置了防盗链,这个自己捣鼓下应该也可以绕过去。



下面我来分析下:

抓取的原理:先获取对应url页面的html内容,然后根据找出你要抓取的目标数据的的html结构,看看这个结构是否有某种规律,然后用正则去匹配这个规则,匹配到了以后就可以扣出来。

先看看http://bbs.csdn.net/recommend_tech_topics这个页面的源代码:


再通过谷歌浏览器我们再次确认了,目标数据是位于<div class="list_1">...</div>中间的


可是怎么匹配呢,我百度了下,就是找某两个字符中间的内容。考虑到结尾</div>很多,我这里就偷懒,把<div class="list_1">...</div>这一对div和近邻着的的后面的一个div【从源代码上我们可以看到是:<div class="page_nav">】<div class="page_nav">放到一起来,所以我的正则出来了:

Regex regex = new Regex("<div class=\"list_1\">([\\s\\S]*)</div>([\\s\\S]*)<div class=\"page_nav\">", RegexOptions.Compiled);
为了美化一下,我加了点css,具体代码如下;

页面:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="testcollection.aspx.cs" Inherits="testcollection" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>测试获取网页信息</title>
    <script src="js/jquery-1.6.min.js" type="text/javascript"></script>
    <style type="text/css">
        a:link, a:visited {color: #335AA4;text-decoration: none;}
        a:hover, a:active {color: #CA0000;text-decoration: underline;}
        a.a_insertdb{ color:#f00; font-weight:bold;}
        a.a_insertdb:hover{ 
本程序用java编写,运行的时候需要JDK1.5或以上环境,无需安装。程序通过分析CSDN博客源码来生成一些必要的数据,可能在以后使用当中出现爬取不了的情况,可能是CSDN的源码结构修改了。程序只是用于学习之用,严禁用于非法目的而照成CSDN服务器过载。 由于生成PDF的时候需要依赖字库,所以在打包程序的时候把一些必要的字库已经放到程序中去了。可能在生成一些PDF文件的时候出现乱码问题,那是因为里面缺少需要的字库,如遇到这个问题,请和本人联系wyphao.2007@163com #################################################### 程序功能: 1、支持输入CSDN博客用户名针对性下载 2、支持选择保存下载的文件 保存的结构目录为: 选择的保存路径\CSDN用户名\img 该用户的头像保存路径 选择的保存路径\CSDN用户名\pdf 生成的PDF文件保存路径 选择的保存路径\CSDN用户名\doc 生成的DOC文件保存路径 选择的保存路径\CSDN用户名\txt 生成的TXT文件保存路径 3、支持获取用户博客信息 4、支持显示用户所有的帖子列表 5、可以自己选择需要下载的帖子,有全选、反选、重置按钮 6、支持下载的文件保存为 pdf、doc、txt三种格式 7、生成的pdf、doc文件支持图片 8、支持进度显示 #################################################### 制作时间:2012年07月17日 - 2012年07月18日 制 作:w397090770 个人博客:http://blog.csdn.net/w397090770 Email :wyphao.2007@163.com 版权所有,翻版不究 ####################################################
本程序用java编写,运行的时候需要JDK1.5或以上环境,无需安装。程序通过分析CSDN博客源码来生成一些必要的数据,可能在以后使用当中出现爬取不了的情况,可能是CSDN的源码结构修改了。程序只是用于学习之用,严禁用于非法目的而照成CSDN服务器过载。 由于生成PDF的时候需要依赖字库,所以在打包程序的时候把一些必要的字库已经放到程序中去了。可能在生成一些PDF文件的时候出现乱码问题,那是因为里面缺少需要的字库,如遇到这个问题,请和本人联系wyphao.2007@163com #################################################### 程序功能: 1、支持输入CSDN博客用户名针对性下载 2、支持选择保存下载的文件 保存的结构目录为: 选择的保存路径\CSDN用户名\img 该用户的头像保存路径 选择的保存路径\CSDN用户名\pdf 生成的PDF文件保存路径 选择的保存路径\CSDN用户名\doc 生成的DOC文件保存路径 选择的保存路径\CSDN用户名\txt 生成的TXT文件保存路径 3、支持获取用户博客信息 4、支持显示用户所有的帖子列表 5、可以自己选择需要下载的帖子,有全选、反选、重置按钮 6、支持下载的文件保存为 pdf、doc、txt三种格式 7、生成的pdf、doc文件支持图片 8、支持进度显示 #################################################### 制作时间:2012年07月17日 - 2012年07月18日 制 作:w397090770 个人博客:http://blog.csdn.net/w397090770 Email :wyphao.2007@163.com 版权所有,翻版不究 ####################################################
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值