硒获取页面源与在浏览器中单击鼠标右键不同

阿姆斯特里

我在解析网页时遇到问题,因为这样做时我得到了不同的页面源:

display = Display(visible=False, size=(800, 600), backend='xvfb')
display.start()
driver = webdriver.Firefox()
url = "http://www.aaa.com"
driver.get(url)
with codecs.open('page.html', 'w', 'utf-8') as f:
    f.write(driver.page_source)

当我打开文件以查看实际文本时,与在浏览器中单击鼠标右键得到的文件有所不同。

例如,某些href变为小写。页面源中的一些标签:

<table class="list" boroder="0" id="list_id">

转换成

<table border="0" id="list_id" class="list">

我很确定这是我要求的网址...

路易

像您正在做的那样,获取网页源有两个主要问题。

  1. 尽管我们使用HTML描述网页,但是浏览器不能直接使用HTML。他们将HTML转换为内部表示形式,称为DOM树。什么driver.page_source和文件保存到磁盘执行的来源是变换了一个名为序列化过程中这个DOM树回到HTML。两个串行器,或者使用具有两种不同的配置的单个串行器,可以序列的相同DOM树不同您遇到过以下一种情况:

    <table class="list" border="0" id="list_id">
    

    <table border="0" id="list_id" class="list">
    

    在上述两个实例中,属性的顺序不同。但是,这并不重要,因为属性未按HTML排序。(元素以及标记元素开始和结束的标签是有序的。因此<a><b><b><a>不相同。)由于序列化程序处理间距的方式,可能会出现其他差异。名称的大小写也可以不同:<TABLE>并且<table>是等效的。这是因为HTML不区分大小写(XHTML区分大小写。)

    不能保证Selenium和Firefox的保存菜单将使用具有完全相同配置的完全相同的序列化程序。因此,从这两种方法获得的结果之间可能会有差异。

  2. 可能导致您麻烦的另一件事是Ajax。如今,网页并非一开始就包含它需要的所有元素,这已经很普遍了。其中一些元素在初始页面完成加载后不久就会加载。如果从保存页面driver.page_source 后,在页面初始加载,但阿贾克斯有机会来加载额外的元素,然后手动保存使用Firefox的菜单页面,有机会,一定的差异会发生,因为driver.page_source缺失的元素加载通过阿贾克斯

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么文件浏览器中的“ du -b”显示的大小不同于“右键单击”⇨“属性”的大小?

来自分类Dev

硒浏览器C#单击

来自分类Dev

硒在浏览器中获取验证码图像

来自分类Dev

如何在Unity Webapps新浏览器中右键单击

来自分类Dev

如何防止在Chrome浏览器中右键单击时触发mouseleave?

来自分类Dev

如何在Unity Webapps新浏览器中右键单击

来自分类Dev

用户脚本绕过禁用浏览器中右键单击功能的网站?

来自分类Dev

我可以在Google Chrome浏览器中添加右键单击选项吗?

来自分类Dev

WinForm浏览器控件右键单击了哪个元素?

来自分类Dev

如何借助硒中的鼠标事件从浏览器屏幕中选择文本?

来自分类Dev

如何借助硒中的鼠标事件从浏览器屏幕中选择文本?

来自分类Dev

在默认浏览器中运行硒?

来自分类Dev

相同的选择器在常规浏览器和硒中给出不同的结果

来自分类Dev

在Web浏览器中的任意位置单击硒2(Python绑定)

来自分类Dev

请求 html 页面与浏览器不同

来自分类Dev

使用硒单击按钮后如何获取页面源

来自分类Dev

硒下载的验证码图片与浏览器中的图片不同

来自分类Dev

在Kendo Grid中单击鼠标右键获取选定的行

来自分类Dev

浏览器中的渲染源失败

来自分类Dev

使用TestNG在不同的浏览器上进行硒测试

来自分类Dev

硒:浏览器显示的内容与HTML代码不同

来自分类Dev

如何检测由Enter键触发的浏览器中的鼠标单击?

来自分类Dev

右键单击SkyDrive文件夹中的文件和文件夹可挂起/冻结文件浏览器

来自分类Dev

外部鼠标插件会导致浏览器在Mac OS X中重新呈现页面?

来自分类Dev

外部鼠标插件会导致浏览器在Mac OS X中重新呈现页面?

来自分类Dev

Python获取硒以响应浏览器通知(Chrome)

来自分类Dev

如何在浏览器视图页面源中隐藏或删除评论?

来自分类Dev

html代码作为源显示在页面中,而不是由浏览器执行

来自分类Dev

硒| 获取youtube页面源

Related 相关文章

  1. 1

    为什么文件浏览器中的“ du -b”显示的大小不同于“右键单击”⇨“属性”的大小?

  2. 2

    硒浏览器C#单击

  3. 3

    硒在浏览器中获取验证码图像

  4. 4

    如何在Unity Webapps新浏览器中右键单击

  5. 5

    如何防止在Chrome浏览器中右键单击时触发mouseleave?

  6. 6

    如何在Unity Webapps新浏览器中右键单击

  7. 7

    用户脚本绕过禁用浏览器中右键单击功能的网站?

  8. 8

    我可以在Google Chrome浏览器中添加右键单击选项吗?

  9. 9

    WinForm浏览器控件右键单击了哪个元素?

  10. 10

    如何借助硒中的鼠标事件从浏览器屏幕中选择文本?

  11. 11

    如何借助硒中的鼠标事件从浏览器屏幕中选择文本?

  12. 12

    在默认浏览器中运行硒?

  13. 13

    相同的选择器在常规浏览器和硒中给出不同的结果

  14. 14

    在Web浏览器中的任意位置单击硒2(Python绑定)

  15. 15

    请求 html 页面与浏览器不同

  16. 16

    使用硒单击按钮后如何获取页面源

  17. 17

    硒下载的验证码图片与浏览器中的图片不同

  18. 18

    在Kendo Grid中单击鼠标右键获取选定的行

  19. 19

    浏览器中的渲染源失败

  20. 20

    使用TestNG在不同的浏览器上进行硒测试

  21. 21

    硒:浏览器显示的内容与HTML代码不同

  22. 22

    如何检测由Enter键触发的浏览器中的鼠标单击?

  23. 23

    右键单击SkyDrive文件夹中的文件和文件夹可挂起/冻结文件浏览器

  24. 24

    外部鼠标插件会导致浏览器在Mac OS X中重新呈现页面?

  25. 25

    外部鼠标插件会导致浏览器在Mac OS X中重新呈现页面?

  26. 26

    Python获取硒以响应浏览器通知(Chrome)

  27. 27

    如何在浏览器视图页面源中隐藏或删除评论?

  28. 28

    html代码作为源显示在页面中,而不是由浏览器执行

  29. 29

    硒| 获取youtube页面源

热门标签

归档