首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python缓存html文件

Python缓存html文件
EN

Stack Overflow用户
提问于 2014-05-02 22:30:08
回答 1查看 911关注 0票数 1

我在本地保存一些html文件,我想从所有不必要的信息中删除它们。这实际上意味着我想要删除所有和标签以及它们各自的内容。

我使用,可以使用以下内容访问页面源代码:

代码语言:javascript
复制
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('http://somesite.com')
html = driver.page_source

我有三个不同的想法:

  • 使用jQuery删除不可缺少的标记,然后访问page_source属性在本地缓存它。沿袭的东西: Driver.execute_script(“$(‘style,script’).remove()”“)缓存(driver.page_source)

但是这段代码不能工作,因为我不能在内部破坏页面源代码,因为我需要站点完整,以便与selenium驱动程序实例进行进一步的交互。+使用lxml解析driver.page_source,然后删除所有不需要的信息。在此访问之后,修改后的页源和缓存locall。代码:

代码语言:javascript
复制
    parsed = lxml.html.fromstring(driver.page_source)

    for bad, worse in zip(parsed.xpath('//script'), parsed.xpath('//style')):
      bad.getparent().remove(bad)
      worse.getparent().remove(worse)
    cache(parsed.text)
    # Problem: parsed.text is empty :/ How can I access the modified source? Remember, I don't need no text_content()
  • 在webdriver中直接修改和截断源,然后访问page_source属性。但是没有任何方法来改变webdriver实例中的dom。

我想lxml方法是最好的方法,因为无论我如何试图解决这个问题,我都不应该搞乱webdriver实例,因为我需要与它进一步交互。我是不是错过了一些关于lxml的东西?

干杯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-02 22:39:41

您可以在单个script表达式中找到stylexpath标记。删除标记后,使用lxml.html.tostring()获取修改后的html。

代码语言:javascript
复制
parsed = lxml.html.fromstring(html)

for bad in parsed.xpath('//script|//style'):
    bad.getparent().remove(bad)

print lxml.html.tostring(parsed)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23437896

复制
相关文章

相似问题

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