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

妖哥,不好意思,再麻烦你一上

2013-01-09 
妖哥,不好意思,再麻烦你一下。关于那个网页抓取数据的问题原帖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;
不好意思,依样画葫芦,没画出来。再麻烦一下妖哥了
[解决办法]
修正后的代码:

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("分析完成.");


输出结果:
16:55:13 正在获取网页数据...
16:55:15 网页数据获取完毕, 正在分析页面元素...
16:55:15 制作公司:盛日影业公司[英国]
16:55:15 分析完成.

热点排行