妖哥,不好意思,再麻烦你一下。
关于那个网页抓取数据的问题
原帖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 分析完成.