首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Selenium -为什么driver.page_source的值只有在写入文件时才正确解析?

问Selenium -为什么driver.page_source的值只有在写入文件时才正确解析?
EN

Stack Overflow用户
提问于 2020-03-20 21:39:53
回答 1查看 457关注 0票数 0

使用Python,我希望从reddit.com获得完整的HTML代码来搜索字符串,但是我只能得到一个奇怪的小版本。下面的if语句中的代码没有运行,但应该运行,因为我知道整个页面源上都存在字符串(在browser dev tools和“View page source”浏览器特性中都可以找到字符串):

代码语言:javascript
复制
driver = webdriver.Firefox()
driver.get('https://www.reddit.com')
driver.add_cookie({'name':'reddit_session', 'value':'###session cookie value goes here###', 'path':'/', 'domain':'reddit.com'})
driver.refresh() # refresh the page to apply the cookie
source_html = driver.page_source

if 'user account' in source_html:
  print("String found.")

driver.close()

复制并粘贴到文件中。它有65,536字节长,没有意义。

有效的方法是将变量内容写入文件:

代码语言:javascript
复制
driver = webdriver.Firefox()
driver.get('https://www.reddit.com')
driver.add_cookie({'name':'reddit_session', 'value':'###session cookie value goes here###', 'path':'/', 'domain':'reddit.com'})
driver.refresh() # refresh the page to apply the cookie
source_html = driver.page_source

with open('page.html', 'w') as myfile:
   myfile.write(source_html)

driver.close()

下面是我希望写入文件的580,000字节的HTML。

我需要能够在Python中搜索这个HTML,而不必创建一个文件。

我尝试了以下几点,但都没有成功:

  • 调试时,复制从driver.page_source返回的字符串,将其粘贴到记事本中并保存为.html文件。
  • 使用BeautifulSoup解析sourceHtml变量。
  • 执行Javascript以获得整个DOM:getDOM = driver.execute_script('return document.documentElement.outerHTML')
  • 使用time.sleep(5)等待页面在运行driver.page_source之前完成加载(尽管WebDriver无论如何在回调之前都要等待完整的响应)。

在此之前,非常感谢您。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-21 14:16:38

我发现了问题。

在调试模式下复制变量的值并不会给出完整的值。

我的if语句中的字符串也意味着'User帐户‘而不是'user帐户’,所以它是在计算false。

当我通过调试模式将变量值保存为html文件时,它只是变量实际保存量的一小部分。这些调试变量值的限制因开发人员环境(Netbeans、Eclipse、VS Code等)而异。在VS代码中,它似乎是65,536字节(2^16)。

我没有讨论下一步,但是如果您确实想要更改调试变量大小限制,我认为在launch.json文件中添加了一个“key:value”(取决于您正在调试的语言)。这是如何为PHP做这件事。

当您“启动”到调试模式时,launch.json文件将应用设置。该文件中有一个名为“.”的蓝色按钮。它将列出可以应用于该文件的所有设置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60781973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档