如何分析网页元素并进行相应处理

如何分析网页元素,然后进行相应处理,比如填表,递交等等 转载:http://bbs.pediy.com/showthread.php?t=53412

#include <Mshtml.h>
AnsiString __fastcall TForm3::Submit(void)
{
IHTMLDocument2 *pHTMLDoc = NULL;
LPDISPATCH pDisp = NULL;
pDisp =CppWebBrowser1->Document;
if(pDisp)
{
if (SUCCEEDED(pDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pHTMLDoc)))
{
pDisp->Release(); //指针不用的时候要释放,下面同理;

IHTMLElementCollection *pelement;
if(pHTMLDoc->get_forms(&pelement)!=S_OK)
{
pHTMLDoc->Release();
pDisp->Release();
pelement->Release();
return "1发送失败";
}
pDisp->Release();
tagVARIANT a,i;
a.vt=VT_UI4;
a.lVal=0;//这个值为你所要填写的表单在整个网页中的顺序,0为第一个表单
if(pelement->item(a,i,&pDisp)!=S_OK) //这个item真是不简单啊。转载这篇文章也是为了你,知道吗?
{
pelement->Release();
pDisp->Release();
return "2发送失败";
}
pelement->Release();
IHTMLFormElement* pFormElem=NULL;
if(pDisp)
{
if(!SUCCEEDED(pDisp->QueryInterface(IID_IHTMLFormElement,(LPVOID*)&pFormElem)))
{
pFormElem->Release();
pDisp->Release();
return "3发送失败";
}
}
else
{
return "31发送失败";
}
pDisp->Release();
LPDISPATCH pDisp_msg = NULL;
tagVARIANT phone,msg,empty;
phone.vt=VT_UI4;
phone.lVal=0;//这个值为Input框在表单中的顺序
msg.vt=VT_UI4;
msg.lVal=1;//这个值为Text文本框在表单中的顺序
if((pFormElem->item(phone,empty,&pDisp)!=S_OK)||(pFormElem->item(msg,empty,&pDisp_msg)!=S_OK))
{
pFormElem->Release();
if(pDisp)
pDisp->Release();
if(pDisp_msg)
pDisp_msg->Release();
return "4发送失败";
}
IHTMLInputTextElement* phoneElem=NULL;
IHTMLTextAreaElement* msgElem;
if(!pDisp||!pDisp_msg)
return "11失败";
if (!SUCCEEDED(pDisp->QueryInterface(IID_IHTMLInputTextElement, (void**)&phoneElem))||(!SUCCEEDED(pDisp_msg->QueryInterface(IID_IHTMLTextAreaElement, (void**)&msgElem))))
{
if(phoneElem)
phoneElem->Release();
if(msgElem)
msgElem->Release();
if(pDisp)
pDisp->Release();
if(pDisp_msg)
pDisp_msg->Release();
return "5发送失败";
}
WideString s_phone,s_msg;
s_phone="888888"
s_msg="你好";
phoneElem->put_value(s_phone.c_bstr());//填写
msgElem->put_value(s_msg.c_bstr());//填写
pFormElem->submit();//提交
phoneElem->Release();
msgElem->Release();
pDisp->Release();
pDisp_msg->Release();
pFormElem->Release();
return "发送成功";
}
}
return "发送失败";
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 如果你想根据网页的结构进行修改,你可以使用以下方法之一: 1. 直接使用浏览器的开发者工具进行修改,这可以让你快速查看和修改网页的源代码。 2. 在网页上使用 JavaScript 进行修改。你可以使用 DOM 操作来获取页面元素进行修改。 3. 使用后端语言(如 PHP、Python、Java)进行修改。这需要你有服务器的访问权限,并且可能需要使用数据库存储和检索数据。 总之,你需要根据你的具体需求和可用的工具来选择合适的方法进行修改。 ### 回答2: 当匹配到空值时,我们可以根据网页结构进行一些修改来处理这个问题。 首先,我们需要确定网页中可能导致匹配到空值的原因。这可能是由于网页结构的变化、数据源的更新或者是其他一些原因造成的。根据具体情况,我们可以采取以下几种方式进行修改。 1. 检查网页结构:分析网页的结构和元素,确定是否发生了变化。可以使用开发者工具检查网页的HTML代码,观察相应数据的位置和标签。如果发现变化,需要相应地更新匹配规则来适应新的网页结构。 2. 修改XPath或CSS选择器:如果使用XPath或CSS选择器来进行匹配,可以尝试修改这些选择器来准确定位到目标数据。通过查看网页的源代码或者使用浏览器提供的开发者工具,确定目标数据的位置和标签,并更新选择器以匹配到正确的元素。 3. 使用正则表达式进行匹配:如果无法使用XPath或CSS选择器进行准确匹配,可以考虑使用正则表达式。根据数据的特征和模式,编写相应的正则表达式来匹配到目标数据。 4. 更新数据源或API:如果空值是由于数据源的更新导致的,可以尝试更新数据源或API,以获取最新的数据。在更新数据源或API之后,还需要相应地修改代码以适应新的数据结构。 在修改之后,我们需要进行测试来确保修改的有效性。可以使用一些测试数据来验证代码是否能够正常匹配到目标数据,以确保我们的修改是正确的。 总而言之,当匹配到空值时,根据网页结构进行修改是一个解决问题的方法。通过仔细分析网页的结构和元素,更新匹配规则或选择器,并进行测试,我们可以有效地解决这个问题。 ### 回答3: 当匹配到空值时,可以通过以下方法根据网页结构进行修改: 1. 检查网页元素结构:首先,检查网页的HTML结构和CSS样式,确认是否正确匹配了需要的元素。查看是否有误导性的CSS选择器、错误的HTML标记或者缺少必要的属性。 2. 使用XPath或CSS选择器:使用XPath或CSS选择器定位到需要修改的元素。通过查找元素的标签、类名、ID或其他属性来精确定位。 3. 判断元素是否可见:确保元素网页中可见,即不会被其他元素遮挡或隐藏。可以通过设置元素的CSS属性display、visibility或者position来调整元素的可见性。 4. 修改元素的内容或属性:通过JavaScript脚本或其他网页编辑工具,修改元素的内容、样式或属性。例如,可以使用JavaScript的DOM操作方法,如getElementById()或querySelector()来获取元素,然后修改其innerHTML、innerText、style或其他属性的值。 5. 考虑兼容性问题:在进行修改时,要考虑不同浏览器的兼容性。确保所使用的方法和属性在各种浏览器中都可以正确执行。 6. 测试修改的结果:对修改后的网页进行测试,确认所做的修改是否起到了预期的效果。可以通过刷新网页,或使用开发者工具中的调试工具来验证修改结果。 总之,当匹配到空值时,根据网页结构进行修改需要仔细检查和定位相关元素,并使用合适的方法和工具进行修改,以确保网页能够正确显示和运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值