spider

原创 2007年09月25日 00:16:00
通过程序自动的读取其它网站网页显示的信息,类似于爬虫程序。比方说我们有一个系统,要提取BaiDu网站上歌曲搜索排名。分析系统在根据得到的数据进行数据分析。为业务提供参考数据。
  为了完成以上的需求,我们就需要模拟浏览器浏览网页,得到页面的数据在进行分析,最后把分析的结构,即整理好的数据写入数据库。那么我们的思路就是:
  1、发送HttpRequest请求。
  2、接收HttpResponse返回的结果。得到特定页面的html源文件。
  3、取出包含数据的那一部分源码。
  4、根据html源码生成HtmlDocument,循环取出数据。
  5、写入数据库。

程序如下:  

        //根据Url地址得到网页的html源码
        private string GetWebContent(string Url)
        {
            string strResult="";
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
    //声明一个HttpWebRequest请求
                request.Timeout = 30000;
                //设置连接超时时间
                request.Headers.Set("Pragma", "no-cache");
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream streamReceive = response.GetResponseStream();
                Encoding encoding = Encoding.GetEncoding("GB2312");
                StreamReader streamReader = new StreamReader(streamReceive, encoding);
                strResult = streamReader.ReadToEnd();
            }
            catch
            {
                MessageBox.Show("出错");
            }
            return strResult;
        }
为了使用HttpWebRequest和HttpWebResponse,需填名字空间引用
  using System.Net;

以下是程序具体实现过程:
 private void button1_Click(object sender, EventArgs e)
        {
            //要抓取的URL地址
            string Url = "http://list.mp3.baidu.com/topso/mp3topsong.html?id=1#top2";

            //得到指定Url的源码
   string strWebContent = GetWebContent(Url);

            richTextBox1.Text = strWebContent;
   //取出和数据有关的那段源码
            int iBodyStart = strWebContent.IndexOf("<body", 0);
            int iStart = strWebContent.IndexOf("歌曲TOP500", iBodyStart);
            int iTableStart = strWebContent.IndexOf("<table", iStart);
            int iTableEnd = strWebContent.IndexOf("</table>", iTableStart);
            string strWeb = strWebContent.Substring(iTableStart, iTableEnd - iTableStart + 8);

            //生成HtmlDocument
   WebBrowser webb = new WebBrowser();
            webb.Navigate("about:blank");
            HtmlDocument htmldoc = webb.Document.OpenNew(true);
            htmldoc.Write(strWeb);
            HtmlElementCollection htmlTR = htmldoc.GetElementsByTagName("TR");
            foreach (HtmlElement tr in htmlTR)
            {
                string strID = tr.GetElementsByTagName("TD")[0].InnerText;
                string strName = SplitName(tr.GetElementsByTagName("TD")[1].InnerText, "MusicName");
                string strSinger = SplitName(tr.GetElementsByTagName("TD")[1].InnerText, "Singer");
                strID = strID.Replace(".", "");
                //插入DataTable
                AddLine(strID, strName, strSinger,"0");

                string strID1 = tr.GetElementsByTagName("TD")[2].InnerText;
                string strName1 = SplitName(tr.GetElementsByTagName("TD")[3].InnerText, "MusicName");
                string strSinger1 = SplitName(tr.GetElementsByTagName("TD")[3].InnerText, "Singer");
                //插入DataTable
                strID1 = strID1.Replace(".", "");
                AddLine(strID1, strName1, strSinger1,"0");

                string strID2 = tr.GetElementsByTagName("TD")[4].InnerText;
                string strName2 = SplitName(tr.GetElementsByTagName("TD")[5].InnerText, "MusicName");
                string strSinger2 = SplitName(tr.GetElementsByTagName("TD")[5].InnerText, "Singer");
                //插入DataTable
                strID2 = strID2.Replace(".", "");
                AddLine(strID2, strName2, strSinger2,"0");

            }
            //插入数据库
            InsertData(dt);
   
            dataGridView1.DataSource = dt.DefaultView;
}
 


 

windows 下 python spider环境配置(requests + bs4)

1,安装python 下载地址:https://www.python.org/downloads/windows/ 由于个人一直使用python2.7,所以这里使用python2.7作参考。 下载安装...
  • wangbin19911213
  • wangbin19911213
  • 2017年07月14日 21:58
  • 348

spider工具类

package com.util; import java.io.File; import java.io.FileOutputStream; import java.io.IOExce...
  • u010029983
  • u010029983
  • 2015年05月11日 19:32
  • 444

python spider学习笔记(一)

以前早就听说过网络爬虫这东西,如今我也开始接触这神奇的东西了,可是乍一看,都是一些高大上的东西,天书啊,什么也看不懂,不知道初学者是否有和我一样的感受? 万事开头难,但是总有办法解决的。首先,我们得...
  • deepexpert_liujian
  • deepexpert_liujian
  • 2014年11月07日 15:22
  • 2465

raise KeyError("Spider not found: {}".format(spider_name)) KeyError: 'Spider not found: novelspider'

>>>runfile('D:/python/novelspider/main.py', wdir='D:/python/novelspider') Reloaded modules: novelspi...
  • liyuetao680
  • liyuetao680
  • 2015年09月15日 22:23
  • 4160

Python Spider 的总结

学用python也有3个多月了,用得最多的还是各类爬虫脚本:写过抓代理本机验证的脚本,写过在discuz论坛中自动登录自动发贴的脚本,写过自动收邮件的脚本,写过简单的验证码识别的脚本,本来想写goog...
  • I_peter
  • I_peter
  • 2016年11月28日 17:01
  • 3407

Spider 之 爬虫 基本工作原理

网络爬虫是捜索引擎抓取系统的重要组成部分。爬虫的主要目的是将互联网上的网页下载到本地形成一个或联网内容的镜像备份。这篇博客主要对爬虫以及抓取系统进行一个简单的概述。 一、网络爬虫的基本结构及工作流程...
  • u013630349
  • u013630349
  • 2016年03月21日 20:36
  • 2943

Spider工作流程.

使用request获取网页得到response,使用selector去分析网页内容,selector使用XPath,CSS等方法来解析网页内容。 1. HTML语言,网页文本语言解读 2. Spide...
  • xuxiatian
  • xuxiatian
  • 2016年10月26日 18:19
  • 424

关于开源框架Scrapy运行命令Crawl

KeyError: 'Spider not found: ''
  • qq_20545625
  • qq_20545625
  • 2017年07月26日 16:56
  • 343

Spider之Scrapy安装的方法详解

安装scrapy的方法详解   scrapy在国内目前使用的人比较少,除了他比较新以外,还在于他本身还有很多弊端,比如:需要的支持包比较多,这些支持包相互之间的依赖关系,导致人们在安装他的时...
  • Mr_Data_Mining
  • Mr_Data_Mining
  • 2013年03月01日 10:11
  • 1366

网络爬虫(Spider)Java实现原理

 “网络蜘蛛”或者说“网络爬虫”,是一种能访问网站并跟踪链接的程序,通过它,可快速地画出一个网站所包含的网页地图信息。本文主要讲述如何使用Java编程来构建一个“蜘蛛”,我们会先以一个可复用的蜘蛛类包...
  • wuhailin2005
  • wuhailin2005
  • 2009年01月08日 18:51
  • 10724
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spider
举报原因:
原因补充:

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