zoukankan      html  css  js  c++  java
  • 爬虫 Beautifulsoup 常用笔记

     Beautifulsoup("http:........", "lxml")  or "html.parser"  or "html5lib"

    soup.find返回的是一个对象,第一个符合条件的标签 

    soup.findAll返回的是一个列表,包含所有符合条件的标签

    所以find后面可以直接接get_text函数,而findAll不行,只能将findAll列表中的元素,单独地去get_text

    例如:

    from urllib.request import urlopen
    from bs4 import BeautifulSoup
    import requests
    html = urlopen("http://www.biqukan.com/")
    a_html = BeautifulSoup(html,'lxml')
    mudi = a_html.find("div",{"class":"r bd"}).get_text()  #find返回单个对象,可以直接接get_text()
    print(mudi)
    
    target = "http://www.biqukan.com/"
    req = requests.get(target)
    html2 = req.text
    bf = BeautifulSoup(html2,'html.parser')
    for mudi2 in a_html.find("div",{"class":"r bd"}).findAll("span",{"class":"s2"}):
        print(mudi2.get_text())   # findAll是一个列表,需要单独将元素get_text()

    同时,注意urlopen和request方式是不同的

    bsObj.findAll("h1")  # 返回页面中标签为<h1>的一个列表
    bsObj.findAll({"h1","h2","h3","h4","h5"})  # 获取全部标题标签的列表
    a = bsObj.findAll("h2")    
    len(a)       #  .findAll 返回的是列表,所以可以用  len()  计算个数
    bsObj.findAll("", {"class":"green"})  # 返回所有标签属性class为green的标签,形成一个列表
    
    bsObj.findAll("span", {"class":"green"})  # 返回所有的span标签中,属性class为绿色的
    for child in jbsObj.find("table",{"id":"giftList"}).children  # 在名为giftList的列表标签下,找到该列表标签的子标签
    
    # 如果不是children而是descendants函数的话,就是该标签下的全部后代标签
    # parent 寻找父标签
    
    
    for sibling in bsObj.find("table",{"id":"giftList"}).tr.next_siblings:  # 寻找该table标签的兄弟标签,不包括他本身,且从他开始往后
    # 如果不是next_siblings, 而是previous_siblings,则是从后往前
  • 相关阅读:
    程序员学习提高必看的一篇文章
    SpringAOP拦截器的代理机制
    springboot03_RabbitMQ
    Docker_02
    Docker_01
    Redis_02
    Redis_01
    关于Linux下内存和Swap
    密码学DAY2
    密码学DAY1_02
  • 原文地址:https://www.cnblogs.com/mrfri/p/8663465.html
Copyright © 2011-2022 走看看