Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 获取网页内容并对其进行处理(打印或保存到文件)_.net_Html_Vb.net - Fatal编程技术网

.net 获取网页内容并对其进行处理(打印或保存到文件)

.net 获取网页内容并对其进行处理(打印或保存到文件),.net,html,vb.net,.net,Html,Vb.net,我是一名房地产估价师,对vb和.net有一些有限的经验。我有一项任务需要执行,这项任务要求我访问conuty鉴定人网站,打印当前公共记录信息的副本(到bmp或jpg图像或直接到默认打印机),每次打印几页到1000多条记录 我做这部分工作并没有真正的收入,所以他们不在乎我花几分钟还是几个小时来做这件事。我认为一定有办法使这个过程自动化,所以上周我开始搜索和测试代码片段 到目前为止,我已经打开了IE的一个实例;导航到所需的页面;查找AcctNo的表单elemet;填写并提交表格。返回的页面已格式化为

我是一名房地产估价师,对vb和.net有一些有限的经验。我有一项任务需要执行,这项任务要求我访问conuty鉴定人网站,打印当前公共记录信息的副本(到bmp或jpg图像或直接到默认打印机),每次打印几页到1000多条记录

我做这部分工作并没有真正的收入,所以他们不在乎我花几分钟还是几个小时来做这件事。我认为一定有办法使这个过程自动化,所以上周我开始搜索和测试代码片段

到目前为止,我已经打开了IE的一个实例;导航到所需的页面;查找AcctNo的表单elemet;填写并提交表格。返回的页面已格式化为屏幕显示,不适合发送到打印机。然而,有一个链接,当点击时返回一个为pinting格式的页面。不利的一面是,它还会打开打印对话框,然后必须处理该对话框。我可以通过多种方法单击“打印”按钮或“取消”按钮,这会给我留下一个文件,该文件可以发送到打印机,也可以放在屏幕上

问题是:

  • 有没有办法在不显示打印对话框的情况下执行此操作?可能是HTTPRequest或HTTPWebREquest,因为我不需要看到屏幕,只需要最后一页

  • 生成的页面通常比字母长几行,并希望打印在两页上。这将是很好的调整页面大小,以适应,通常它将是相同的大小

  • 如果我坚持使用“打印”对话框,单击“打印”或“取消”,如何截取文档并根据程序中设置的选项决定是将文件发送到打印机还是保存到图像

  • 我确信我工作太努力了,所以我想有人能在一秒钟内回答这个问题,而我花了三天的大部分时间试图解决这个问题

    我喜欢把事情弄清楚的挑战,所以当我在课堂上或某个网站上指点我是非常感激的,但是示例代码是很有帮助的,因为我不是一个经验丰富的程序员,基本上会拿示例并根据我的需要对其进行更改


    谢谢

    使用基于GUI的宏录制软件(例如,Windows),这听起来很容易解决(无论如何比编程方法更容易)。我能看到的唯一困难是找到正确的表单元素和打印链接

    您可以尝试用同样的方式获取URL,而不是通过编程方式单击指向打印页面的链接。如果我还记得的话,您可以通过web浏览器上的
    Document
    属性检索该链接,并使用DOM工具查找该链接,然后获取HREF属性

    获得链接的URL后,使用
    HttpClient
    将该URL下载到文件(或内存流)中。将文件加载到内存中(除非它在内存流中,在这种情况下它已经在内存中)并删除打印机的脚本(或者通过替换
    禁用所有脚本)。您可能需要执行更多的逻辑,因为大多数脚本标记中都有HTML注释标记

    完成所有处理后,将其作为临时文件保存到磁盘,并将浏览器控件导航到该文件

    如果存在无法加载/工作的图像或链接,请查看在处理文件时向文件添加
    标记。这将修复URL


    希望这有帮助!

    常规(屏幕显示)和可打印文档的URL之间可能存在某种模式。例如,它们可能在URL中使用相同的文档ID号

    一旦知道了该模式,就可以计算可打印的URL,然后将加载该URL的结果保存到文件中

    import mechanize, re
    
    browser = mechanize.Browser()
    browser.open("http://google.com")
    
    #find and follow a link with the text "About" in it
    about_page = browser.follow_link(text_regex = re.compile("About"))
    
    #open a local html file to save to
    output_file = open("about.html","w")
    
    for line in about_page.read():
      output_file.write(line + '\n')
    output_file.close()
    

    只需确保检查“未找到页面”或其他错误(破解URL以了解他们的错误页面是什么样子),这样,如果他们更改可打印URL的格式,您将收到警告,而不是盲目保存错误页面:)

    您试图做的就是所谓的web抓取。虽然我不是一个VB的家伙(对不起!),但通常我会像这样分解网页抓取程序-

  • 使用GET或POST从URL下载HTML文件
  • 从该文件中提取信息
  • 格式化并返回该信息,或者重复在HTML中找到的链接
  • 谷歌搜索“vb网页抓取”提供了许多不同的技术,但我不确定你对什么感到满意。理想情况下,一种更加网络友好的语言可能是一个好主意。我大部分的刮片都是用Python完成的。虽然我过去做这件事很困难,但我最近开始尝试一种图书馆——机械化——它让我的生活变得容易多了

    这段Python将进入Google的主页,进入“About”链接,并将HTML保存到一个文件中

    import mechanize, re
    
    browser = mechanize.Browser()
    browser.open("http://google.com")
    
    #find and follow a link with the text "About" in it
    about_page = browser.follow_link(text_regex = re.compile("About"))
    
    #open a local html file to save to
    output_file = open("about.html","w")
    
    for line in about_page.read():
      output_file.write(line + '\n')
    output_file.close()
    

    我知道你不懂Python,但它是最容易学习的语言之一,似乎比VB更适合这个任务。另外,StackOverflow上的很多人都会说这句话-将~14k标签与~5k标签进行比较。

    也许我可以简化问题。。一旦我在web中有了一个文档。文档是否可以通过编程方式将其发送到打印机处理PrintDocument的printPage事件,以调整图形大小并发送到文件或打印机?我想通过研究我可以做到,但我还没有找到一个解决web.document的例子。除了通过宏实现自动化之外:我不知道。让我们看看其他的答案是什么…+1的python方法,并提出了关键字“网页抓取”,以推动进一步的谷歌搜索。