zoukankan      html  css  js  c++  java
  • python3 爬虫笔记(一)beautiful_soup

    很多人学习python,爬虫入门,在python爬虫中,有很多库供开发使用。

    用于请求的urllib(python3)和request基本库,xpath,beautiful soup,pyquery这样的解析库。其中xpath中用到大量的正则表示式,对于新手来说,写正则很容易出错,在这里,从beautiful soup开始说。

    from beautiful_soup.constant import HTML_TEXT

    from bs4 import BeautifulSoup
    soup = BeautifulSoup(HTML_TEXT, 'lxml')
    # 将html文件以标准的格式输出, 会自动补全缺失的HTML结构
    print(soup.prettify())
    # 获取title标签的内容
    print(soup.div.string)
    # 获取名称
    print(soup.div.name)
    # 获取属性 属性值多个,所以返回值为list列表
    print(soup.div.attrs)
    # 元素选择可以嵌套 ,这样的方式在多个的情况下,只取第一个,
    # 比如body中有多个div,这里取了第一个
    print(soup.body.div.a.attrs)

    # contents 属性获取直接的子节点 children属性也是如此

    用属性选择较快,但是遇到复杂的情况,就很不灵活,这时候我们需要调用beautiful_soup中的一些方法# find_all 查询所有符合条件的元素
    # find_all(name, attrs, recursive, text, **kwargs)
    # name是属性名 attrs是属性
    print(soup.find_all(name="ul"))

    for ul in soup.find_all(name="ul"):
    print(ul.find_all(name="li"))
    # 属性传入夫人参数为字典格式
    print(soup.find_all(attrs={"class": "js-geo-city"}))

    # text
    print(soup.find_all(text=re.compile("热")))

    # find() 用法和find_all()一致,只不过返回的是单个元素,匹配到的第一个

    # 其他方法
    find_parents() # 返回所有的祖先节点
    find_parent() # 直接返回父节点

    find_next_siblings() # 返回后面所有的兄弟节点
    find_next_sibling() # 返回后面第一个兄弟节点

    find_previous_siblings() # 返回前面所有的兄弟节点
    find_pervious_sibling() # 返回前面第一个兄弟节点

    # css选择器 select()
    print(soup.select("ul li"))


  • 相关阅读:
    锋利的jQuery书中推荐的几款插件
    60款很酷的 jQuery 幻灯片演示和下载
    关于viewport
    几个Jquery对话框插件
    从小白白到大白白之初识区块链(如何理解区块链)
    简单的MVC与SQL Server Express LocalDB
    java的MVC与C#
    企业微信登陆方式
    整洁的测试遵循的规则
    Android活动的生命周期
  • 原文地址:https://www.cnblogs.com/qiutian-guniang/p/9694005.html
Copyright © 2011-2022 走看看