zoukankan      html  css  js  c++  java
  • Python爬虫系列(七):提高解析效率

    如果仅仅因为想要查找文档中的<a>标签而将整片文档进行解析,实在是浪费内存和时间.最快的方法是从一开始就把<a>标签以外的东西都忽略掉. SoupStrainer 类可以定义文档的某段内容,这样搜索文档时就不必先解析整篇文档,只会解析在 SoupStrainer 中定义过的文档. 创建一个 SoupStrainer 对象并作为 parse_only 参数给 BeautifulSoup 的构造方法即可

    目标文档

    from bs4 import BeautifulSoup, NavigableString
    from bs4 import SoupStrainer

    only_a_tags = SoupStrainer("a")
    only_tags_with_id_link2 = SoupStrainer(id="link2")


    def is_short_string(string):
    return len(string) < 6


    only_short_strings = SoupStrainer(text=is_short_string)

    soup = BeautifulSoup(html_doc, "lxml")
    print('1------------找到所有a元素')
    print(BeautifulSoup(html_doc, "html.parser", parse_only=only_a_tags).prettify())
    print('2------------找到id=link2的元素')
    print(BeautifulSoup(html_doc, "html.parser", parse_only=only_tags_with_id_link2).prettify())
    print('3------------找到元素长度小于10的元素')
    print(BeautifulSoup(html_doc, "html.parser", parse_only=only_short_strings).prettify())

    今天,我们的爬虫系列基础就算告一段落。这些,就是公司培训新手的教程。实际上,在项目的实际过程中,还有太多坑,知识库里面的东西后面逐步分享出来。

    码字不易,期盼点赞

  • 相关阅读:
    运维相关
    五指MUD协议
    android 超简单的拖动按钮 悬浮按钮 吸附按钮 浮动按钮
    find_player 不查找已经晕到玩家的问题
    练英语资源
    Java泛型
    JAVA WEB开放中的编码问题
    PHP初中高级学习在线文档下载
    springmvc请求参数获取的几种方法
    游戏数值——LOL篇 以LOL为起点-说游戏数值设计核心思路
  • 原文地址:https://www.cnblogs.com/zijiyanxi/p/7726258.html
Copyright © 2011-2022 走看看