消除or替代字串 抓取特定html tag

jason36900 2014-09-06 12:31:59
小弟卡這部分卡很久了
希望有很多大哥大姊幫忙解決一下
能貼程式碼範例供參考最是感激不盡
因為小弟幾乎沒什麼寫程式經驗
但學校因素所以必須做出此功能
已經大部分做出來大概60%
現在問題是
第一
我用爬蟲上網抓取我要的資料
顯示出來正常 沒有特殊字元 符號

但是在存進去資料庫裡
資料庫裡面的資料卻有特殊字串   這個
想請問
如何讓存進資料庫裡的資料裡   還有前後空白一起消掉 (PS 空白我是用 trim消除  這個卻消不掉)


第二
我想抓取文章內容的照片(只要照片不要其他文字)
因為是一次抓取大概9筆資料
但並非每篇文章都有照片
因此想請問 如何抓取 div裡面的img
還有If 判斷式該怎麼寫比較好



認真的請求幫忙

如需要什麼資料或是程式都可以PO給各位看

回答請幫忙用程式碼解釋 單純文字可能看不太懂
...全文
315 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jason36900 2014-09-07
  • 打赏
  • 举报
回复
引用 3 楼 phoenix8343_cn 的回复:
第一和第二都可以用正则表达式来处理 处理转义字符比较简单,HTML 就那么几种转义字符,可以使用正则表达式一次性进行替换。获取 img 的也可以使用正则表达式来处理,例如,底下是一个简单的示例打印出页面中的图片。 static void Main(string[] args) { HttpWebRequest request = HttpWebRequest.CreateHttp("http://www.baidu.com"); using (StreamReader reader = new StreamReader(request.GetResponse().GetResponseStream())) { string line = default(string); System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex("[<|\\s]+img src=\"([^\"]+)\""); while ((line = reader.ReadLine()) != null) { System.Console.WriteLine(line); if (regex.IsMatch(line)) { foreach (System.Text.RegularExpressions.Match match in regex.Matches(line)) { System.Console.WriteLine(match.Groups[1].Value); } } } } System.Console.ReadKey(); }
謝謝大哥 我嘗試一下 有成功就馬上結帖了
jason36900 2014-09-07
  • 打赏
  • 举报
回复
引用 2 楼 caozhy 的回复:
(1)用htmldecode先转码,再用trim 好的這部分我嘗試看看 請問有範例嗎? (2)贴出html代码片段,好提供给你一个正则表达式来过滤
<div id="InnerTopicLeft"> <table border="0" cellspacing="0" cellpadding="0"> <tr> <td><img src="images/InnerTopicIcon001.jpg" alt="標題" border="0" /></td> <td id="InnerTopic">LINE跑跑薑餅人愛心接力跑!</td> </tr> </table> </div> <div id="InnerTopicRight"> 大概是這個片段 要抓到<td><img 裡面的照片 但問題在於 我一次想要抓取的文章有9筆 但不是每筆都有照片 且並不一定都是放在div 跟td裡面 (有的是<p>裡) 所以想請問能不能鎖定抓到img裡面的圖就好 而不是固定抓到td呢? 請大哥賜教
jason36900 2014-09-06
  • 打赏
  • 举报
回复
能完整幫我解決的大哥大姐們 我可以再提高點數 拜託各位
iGouzy 2014-09-06
  • 打赏
  • 举报
回复
第一和第二都可以用正则表达式来处理 处理转义字符比较简单,HTML 就那么几种转义字符,可以使用正则表达式一次性进行替换。获取 img 的也可以使用正则表达式来处理,例如,底下是一个简单的示例打印出页面中的图片。 static void Main(string[] args) { HttpWebRequest request = HttpWebRequest.CreateHttp("http://www.baidu.com"); using (StreamReader reader = new StreamReader(request.GetResponse().GetResponseStream())) { string line = default(string); System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex("[<|\\s]+img src=\"([^\"]+)\""); while ((line = reader.ReadLine()) != null) { System.Console.WriteLine(line); if (regex.IsMatch(line)) { foreach (System.Text.RegularExpressions.Match match in regex.Matches(line)) { System.Console.WriteLine(match.Groups[1].Value); } } } } System.Console.ReadKey(); }
threenewbee 2014-09-06
  • 打赏
  • 举报
回复
(1)用htmldecode先转码,再用trim (2)贴出html代码片段,好提供给你一个正则表达式来过滤

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧