zoukankan      html  css  js  c++  java
  • BeautifulSoup

    使用方法:
    (1) 根据标签名查找 - suop.a 只能找到第一个符合要求的标签 (2) 获取属性值 - suop.a.attrs 获取a所有的属性和属性值,返回一个字典 - suop.a.attrs["href"] 获取href属性值 - suop.a["href"] 简写为这种形式 (3) 获取内容 - suop.a.string 获取标签中直系的文本内容 - suop.a.text 获取所有标签中的文本内容 - suop.a.get_text() 获取所有标签中的文本内容 【注意】如果标签中还有标签,那么string获取到的结果为None,其他两个方法可以获取到文本内容 (4) find 找到第一个符合要求的标签 - suop.find("a") 找到第一个符合要求的 # 根据标签中的属性获取指定的a标签 - suop.find("a", class_="xxx") # class是关键字需要加_ - suop.find("a", id="xxx") - suop.find("a", href="xxx") - suop.find("a", alt="xxx") - suop.find("a", tetle="xxx") # 可以和获取内容的方法连用 - suop.find("a",href="/hecheng/27.html").text (5) find_all 找到所有符合要求的标签 - suop.find_all("a") - suop.find_all(["a","p"]) 找到所有a标签和p标签 - suop.find_all(["a","p"],limit=2) 取前两个 (6) 根据选择器选择指定的内容 select:suop.select("#id") - 常见的选择器:标签选择器(a)|类选择器(.)|id选择器(#)|层级选择器 - 层级选择器: div .mm div下面所有class属性值为mm的,子子孙孙,下面多级 div > .dd div儿子级class属性为dd的,下面一级 【注意】查询到的是所有数据,返回列表

    项目演示:

    import requests
    import lxml
    from bs4 import BeautifulSoup
    url = "http://www.shicimingju.com/book/sanguoyanyi.html"
    response = requests.get(url).text 
    suop = BeautifulSoup(response,'lxml') # 实例化对象,使用lxml进行解析
    a_list = suop.select('.book-mulu > ul > li > a')
    url = "http://www.shicimingju.com"
    for a in a_list:
        fiction_name = a.string   # 小说章节名称
        fiction_url = url+a["href"]  # 小说章节url地址
        response = requests.get(fiction_url).text  # 请求每个章节的url地址
        suop = BeautifulSoup(response,'lxml')
        content = suop.find("div",class_="chapter_content").text  # 获取标签内所有文本数据
        with open("./{}.txt".format(fiction_name),"w",encoding="utf-8") as fp:
            fp.write(content)
    print("下载成功!!!")

    select选择器选择a标签中的文本内容和href属性

     效果:

  • 相关阅读:
    org.hibernate.HibernateException: No Session found for current thread
    TCP/IP协议 HTTP协议
    [ERROR][org.springframework.web.context.ContextLoader][main] Context initialization failed org.sprin
    oracle 导出表结构和数据,使用plsql
    jar包里查找指定的class文件,排查是否存在或重复,工具软件:Java Class Finder
    maven手动安装jar到本地仓库
    The reference to entity “idNo” must end with the ';' delimiter 异常处理
    activeMQ下载,安装,启动,关闭
    Oracle错误:ORA-01033
    -Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m
  • 原文地址:https://www.cnblogs.com/yongyuandishen/p/14904794.html
Copyright © 2011-2022 走看看