首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

妖哥,不好意思,再麻烦你一下。解决思路

2012-03-16 
妖哥,不好意思,再麻烦你一下。关于那个网页抓取数据的问题原帖http://topic.csdn.net/u/20101122/21/17e280

妖哥,不好意思,再麻烦你一下。
关于那个网页抓取数据的问题
原帖http://topic.csdn.net/u/20101122/21/17e2800a-a02c-4fe4-aaaa-a685aea28340.html

那里是抓取的一部份。

现在网页 换成http://movie.mtime.com/56856/company_credits.html
我想抓取那个制作公司。
网页里面是这样

<H3 class="bold lh20 px14">制作公司:</H3>
<DIV class="line_dot mb6"></DIV>
<OL class="pl28 list_num">
  <LI><A href="http://movie.mtime.com/movie/company/25181/">盛日影业公司</A> <SPAN 
  class=ml6>[英国]</SPAN> <EM class="c_a5 ml6"></EM>
  <LI><A href="http://movie.mtime.com/movie/company/11547/">华纳兄弟影片公司</A> <SPAN 
  class=ml6>[美国]</SPAN> <EM class="c_a5 ml6"></EM></LI></OL></DIV>

-----------------------------------

我就依样画葫芦。

[code=C/C++]
  String strUrl = “http://movie.mtime.com/56856/company_credits.html” ;
TMemoryStream *ms = new TMemoryStream;
IdHTTP1->Get(strUrl, ms);
LPSTR lpBuf = new char[ms->Size];
ms->Position = 0;
ms->Read(lpBuf, ms->Size);
delete ms;

String strText = Utf8ToAnsi(AnsiString(lpBuf));
delete []lpBuf;
String strFind, strTemp;
int nPos;

// 分析 制作公司
strFind = "<H3 class=\"bold lh20 px14\">制作公司:</H3>";
nPos = strText.Pos(strFind);

strTemp = strText.SubString(nPos + strFind.Length() + 60, 1024);
strTemp = strTemp.SubString(1, strTemp.Pos("</li>") - 1);

OutputLog("制作公司:" + CrnRemoveHTMLTag(strTemp));
MemoCompany->Text = CrnRemoveHTMLTag(strTemp);code]

  nPos 抓出来都是 0;
不好意思,依样画葫芦,没画出来。再麻烦一下妖哥了

[解决办法]
修正后的代码:

C/C++ code
OutputLog("正在获取网页数据...");TMemoryStream *ms = new TMemoryStream;IdHTTP1->Get("http://movie.mtime.com/56856/company_credits.html", ms);LPSTR lpBuf = new char[ms->Size];ms->Position = 0;ms->Read(lpBuf, ms->Size);delete ms;String strText = Utf8ToAnsi(AnsiString(lpBuf));delete []lpBuf;OutputLog("网页数据获取完毕, 正在分析页面元素...");String strFind, strTemp;int nPos;// 分析 制作 公司strFind = "<h3 class=\"bold lh20 px14\">制作公司:</h3>";nPos = strText.Pos(strFind);strTemp = strText.SubString(nPos + strFind.Length() + 1, 1024);strTemp = strTemp.SubString(1, strTemp.Pos("</li>") - 1);OutputLog("制作公司:" + CrnRemoveHTMLTag(strTemp));OutputLog("分析完成."); 

热点排行