• BeautifulSoup入门


    参考文献https://blog.csdn.net/weixin_30788239/article/details/95076026

    问题:最近通过request请求。发现返回了很多Html代码。实际我们只需要取其中一段。soup来实现

    import  requests
    import json
    from requests.auth import HTTPBasicAuth
    from urllib import parse
    from bs4 import BeautifulSoup  ### 引入
    
     result=''
            try :
                res = self.session.post(url, data=req_data, headers=self.header)  # 如果采用post 提交 这里无需操作。如果采用get提交,需要将参数放到url
                # print(res.text)
                ### 开始解析html
                soup = BeautifulSoup(res.text, 'html.parser')
                result = soup.find_all('textarea')
                print(result)
    
            except:
                print("erro")
    
            return result

    二、soup  常用函数介绍

    查找所有的h4标签,并且分别打印内容和带标签的内容

    BeautifulSoup对象.find(标签,属性)  
    find():提取满足条件的首个元素
    find_all():提取满足条件的所有元素
    属性使用class_=’’
    
    案例一:
    #coding=utf-8
    import json
    import requests
    from bs4 import BeautifulSoup
    url = 'http://www.itest.info/courses' # 定义被抓取页面的url
    soup = BeautifulSoup(requests.get(url).text, 'html.parser')# 获取被抓取页面的html代码(注意这里是用 request框架获取的页面源码),并使用html.parser来实例化BeautifulSoup,属于固定套路
    for course in soup.find_all('h4'):# 遍历页面上所有的h4标签
      print course.text.encode('utf-8')# 打印出h4标签的text字符    如: 测试开发--试验班
      print course  # 打印出h4的text字符加标签    如:<h4>测试开发--试验班</h4>
    
     

    三、查找div 和spanl  内容

    url = 'https://www.v2ex.com/'
    soup = BeautifulSoup(requests.get(url).text, 'html.parser')
    for span in soup.find_all('span', class_='item_hot_topic_title'):#查找span标签 且样式为class_='item_hot_topic_title',注意是class_,不是class,因为class是python的关键字,所以后面要加个尾巴,防止冲突
      print span.find('a').text.encode('utf-8')#获取里面的a标签展示,假如span标签里面有很多a标签,可以 for i in span.find_all('a', href='/t/415664')继续筛选
      print span.find('a')['href'].encode('utf-8') #获取href属性,在bs4里,我们可以通过[attribute_name]的方式来获取元素的属性
  • 相关阅读:
    WEB服务器3--IIS7.0安装和配置
    组件与组件之间的通信以及vue2.0中的变化、示例
    Vue2.0组件之间通信
    weex学习资源集合贴
    主题 : 好了,今天周六了,既然没人了,那么开讲多线程编程
    使用vue2.0 vue-router vuex 模拟ios7操作
    iOS开发之遍历Model类的属性并完善使用Runtime给Model类赋值
    iOS开发之使用Runtime给Model类赋值
    AFNetworking到底做了什么?
    webview300毫秒点击问题
  • 原文地址:https://www.cnblogs.com/xiajq/p/13402028.html
Copyright © 2020-2023  润新知