• html解析のBeautifulSoup


    引子:

    使用python爬虫对爬取网页进行解析的时候,如果使用正则表达式,有很多局限,比如标签中出现换行,或者标签的格式不规范,都有可能出现取不到数据,BeautifulSoup作为一个专门处理html格式的python第三方库,在格式处理上要明显优与正则表达式,而且使用简便。

    安装:

    下载beautifulsoup4-4.5.0,打开cmd,进入beautifulsoup文件目录,执行python setup.py install 进行安装

    打开python命令行,执行from bs4 import BeautifulSoup 成功,则安装成功

    使用:

    获取指定标签及内容

    soup=BeautifulSoup(text,"html.parser")  #text为html文本,"html.parser"指按html格式进行解析

    li= soup.find_all(name="li",attrs={"class":"rlbh"}) #查找所有li标签,class类型为rlbh

    find只返回第一个标签,find_all返回所有标签,findAll是beautifulsoup3 的方法,在bs4中也可以用,find_all是bs4中的方法。

    find_all返回结果为list类型,如果需要在返回结果中继续匹配可以这样:

    li= soup.find_all(name="li",attrs={"class":"rlbh"})
    for i in li:
      #get count
      lbdj=i.find_all(name="span",attrs={"class":"lbdj"})  #匹配li结果中的所有span标签,且class类型为lbdj

    获取链接

    a=span[0].find_all(name="a",attrs={"target":"_blank"})  #获取a标签
    href=a[0].get('href')  #获取a标签中href属性的内容
    也可以直接a[0]['href'] 获取

    获取内容

    title=a[0].getText()  #获取a标签中的文本

    如:<a href="http:127.0.0.1">localhost</a>获取到的就是localhost

      

  • 相关阅读:
    关于JQ的$.deferred()
    JS去掉数组的重复项
    JS中iframe相关的window.self,window.parent,window.top
    JQ的live(),on(),deletage(),bind()几个的区别
    个人对闭包的理解
    ajax 代码
    Don't use runAllManagedModulesForAllRequests="true" when getting your MVC routing to work
    SQL语句收集
    性能速度
    ADO.NET(SqlConnection、SqlCommand、SqlDataAdapter、SqlTransaction、SqlParameter、DataSet)
  • 原文地址:https://www.cnblogs.com/taurusfy/p/6867281.html
Copyright © 2020-2023  润新知