【发布时间】:2015-05-12 06:37:17
【问题描述】:
我有一个用 C# 编写的用于提取数据的网络爬虫。我想从 Web 浏览器控件中复制文本并以编程方式将其粘贴到 Word 文件中。当我尝试使用其 ID 和 InnerText 提取富文本框内容时,文本包含编码字符,如 %2c。
我需要获取所有格式的文本,但我找不到任何方法。我试过Encoding、HTTPUtility.UrlDecode、SendKeys 和elem.InvokeMember() 都没有成功。
如何以编程方式从 Web 浏览器控件中复制和粘贴文本并保留格式?
这是要提取的示例数据:
说明
Advance Concepts 工程团队设计和开发满足未来监管要求和客户竞争要求的新车。合格的候选人将负责整车包装。随着车辆走向生产,候选人将识别并解决适应和包装问题。他们将主持跨职能团队会议,与系统和组件、先进制造、服务等部门合作,确保针对车辆生命周期的所有阶段优化解决方案。
HtmlElement elem = wb.Document.GetElementById("ctl00_contplhDynamic_txtDescrContentHiddenTextarea");
if (elem == null) return;
elem.InvokeMember("Click");
//elem.InvokeMember("Select All");
//elem.InvokeMember("Copy");
SendKeys.SendWait("^a");
SendKeys.SendWait("^c");
Clipboard.Clear();
elem.Focus();
elem.InvokeMember("Right Click");
elem.InvokeMember("Select All");
elem.InvokeMember("Copy");
Clipboard.SetText(elem.InnerText);
string clipbrdText = Clipboard.GetText();
string data = elem.InnerText;
richTextBox1.Text = data;
string temp = System.Web.HttpUtility.UrlDecode(data);
Encoding iso = Encoding.GetEncoding("windows-1252");
Encoding utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(data);
byte[] isoBytes = Encoding.Convert(utf8, iso, utfBytes);
string msg = iso.GetString(isoBytes);
【问题讨论】:
-
您的问题解决了吗?
-
不,伊万,我不能。我本来想复制文本并将其粘贴到任何 Word 文档或任何地方以保存它。但我无法复制文本。手动我可以复制,但它没有用。你有办法吗?
标签: c# web-scraping webbrowser-control