asp.net抓取网页并对字符串过滤存入数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net抓取网页并对字符串过滤存入数据库相关的知识,希望对你有一定的参考价值。

比如我要抓取新浪网页的图片并存入数据库,怎么写?高手赐教。
抓取的网页代码中我怎么写这程序让他只把网页中我要的html代码存进数据库。比如我只要<img src="photo/1.jpg" />我只要photo/1.jpg

我想这是网上所说的图片小偷吧。我怎么把这个网页中的像<img src="photo/1.jpg" />的代码依次存入数据中..找到一个这样的代码就存一个进数据库?诚请赐教//
说实话,你们都很尽心,也感谢各位的支持,程序只存html中需要的代码进入数据库,不存图片文件。至于防下载的各位不用担心,我有国外的软件可以穿透防下载。

我不知道把分给哪个?真的,你们都很好也很热心,明天开始发起投票,有更好的回答意见可以补充。正则表达式我要看书才能搞定,我也知道如何读取网页数据,就是不知道怎么样把需要的代码从那么多的源html中独立出来,存数据库我也会。感谢各位的支持,小生有礼了.

还有一个问题?
假如一个网站有多个目录,怎么让程序自动找到并下载?
http://www.xxx.com/photo/112/1.html
http://www.xxx.com/photo/112/2.html
http://www.xxx.com/photo/112/3.html
http://www.xxx.com/photo/112/4.html
http://www.xxx.com/photo/113/1.html
http://www.xxx.com/photo/113/2.html
....

你存进数据库是存图片地址(如果新浪有图片防止盗链,你也访问不了),还是直接下载图片,存图片到数据库

建议楼主先学习C#的正则表达式(这个是最重要的)
至于下载一个页面,都很简单,方法很多
比如
WebClient myWebClient = new WebClient();
myWebClient.DownloadString("http://www.baidu.com");//得到的字符串就是网页源代码了...

using System.Text;
using System.Text.RegularExpressions;
//假设这个aaa是得到的网页字符串
string aaa = "asdfsdf<img src=\"photo/1.jpg\"/>asdfsadfsdf<img src=\"photo/2.jpg\"/>";
Regex re = new Regex("src=\"([^\"]*)\"",RegexOptions.IgnoreCase);
MatchCollection mc = re.Matches(aaa);
foreach(Match ma in mc)

ma.Groups[1].Value;//得到的字符串就是每一个匹配的图片地址,这里是photo/1.jpg和photo/2.jpg
参考技术A 分析页面源代码,结构化其中的数据(主要是字符串的处理和匹配,推荐正则表达式)
或者用我的方法

下面的程序是我自己写的,可以获取urls的网页源代码。你可以根据返回的tempstr,你再找到他读取数据那里的规律,再用Substring IndexOf LastIndexOf这些函数来截取你想要的内容保存到数据库,或者用
正则表达式也可以。看你自己的熟悉程度了。 至于你要实时的,那你定期执行这个程序就可以了啊。你把已采集的地址存一下,以后采集保存前判断下有没有保存同样的数据就可以了。

public string getfiles(string urls)

WebRequest wrq;
HttpWebResponse wrp;

wrq=HttpWebRequest.Create(urls);
wrp=(HttpWebResponse)wrq.GetResponse();
Stream resStream=wrp.GetResponseStream();
StreamReader sr = new StreamReader(resStream, System.Text.Encoding.Default);
string tempstr = sr.ReadToEnd();
return tempstr;


就是不知道怎么样把需要的代码从那么多的源html中独立出来?
这种你可以用正则表达式,或者可以用循环来截取判断字符串在保存进数据库啊。substring indexof这些函数一起用

假如一个网站有多个目录,怎么让程序自动找到并下载?
你采集他的文章列表页啊。再得到这些地址本回答被提问者采纳
参考技术B 步骤 抓取URL源代码 根据规则利用正则分析,然后把自己需要的HTML存入数据库 参考技术C 可以截字符串,或者利用正则,
参考:http://www.elooog.cn/post/41.html
参考技术D http://www.zu14.cn/tag/regex/

有你要的系列

mysql存入中文乱码解决方法(windows环境)

  项目中要将抓取一些网页内容保存到mysql数据库中,当抓取的内容中包含中文时,在控制台打印出来的中文是正常显示的,但存入数据库表中时,显示乱码。
进入mysql命令行,执行以下命令:
show variables like "%char%";

发现character_set_server是latin1的,要改成utf8,可以执行以下命令:
set character_set_server=\'utf8\';

但是,character_set_server如果默认为latin1,要永久更改,用set命令是行不通的,而更改my.ini文件,也没有效果。 
永久更改方案:在MySQL的安装文件中进入bin目录下,双击MySQLInstanceConfig.exe,重新走一遍server的配置,但需要注意的是,在Character Set环节,要选择第三项,character选择utf8,(第一项是默认server字符集为latin1)。


这时向数据库中存入数据库时,中文显示正常,从网页中显示表数据时,中文也正常。

以上是关于asp.net抓取网页并对字符串过滤存入数据库的主要内容,如果未能解决你的问题,请参考以下文章

python网络爬虫抓取动态网页并将数据存入数据库MySQL

利用jsoup抓取网页的图文信息,只需要网页上的文章和图片,怎么样同时抓取这两个信息?

免费毕设ASP.NET基于Ajax+Lucene构建搜索引擎的设计和实现(源代码+论文)

asp.net爬虫asp.NET分页控件抓取第n页数据 javascript:__doPostBack

如何抓取HTML页面数据

python如何抓取网页源代码中的字符串