美文网首页
python学习第八章

python学习第八章

作者: 赵一矛 | 来源:发表于2018-12-10 23:48 被阅读0次

pyinstaller库的使用

pyinstaller是一个将Python语言脚本(.py)打包成可执行文件的第三方库,可用于windows,Linux,Max OS X等操作系统。
使用pip工具安装
pip install pyinstaller
打包:
pyinstaller F:\python\codes\da.py

beautifulsoup4库的使用

beautifulsoup4库是一个解析和处理HTML和XML的第三方库。
它最大的优点是根据HTML和XML语法建立解析树,进而高效解析其中的内容。
HTML建立的web页面是一个非常复杂,除了有用的信息外,还包括大量用于页面格式的元素,直接解析一个Web页面需要深入了解HTML语法,而且比较复杂。beautifulsoup4库将专业的Web页面格式解析部分封装成函数,提供了若干有用且便捷的处理函数。
引用beautifulsoup4库
from bs4 import BeautifulSoup

beautifulsoup4库解析

beautifulsoup4库中最主要的是Beautifulsoup4类,每个实例化的对象相当于一个页面。采用from-import导入库中的Beautifulsoup类后,使用Beautifulsoup()创建一个BeautifulSoup对象。


  • BeautifulSoup对象的常用属性(共6个)



  • 标签对象的常用属性(共4个)



    由于HTML语法可以在标签中嵌套其他标签,所以,string属性的返回值遵循如下原则

  • 如果标签内没有其他标签,string属性返回其中的内容。
  • 如果标签内部还有其他的标签,但只有一个标签,string属性返回最里面的标签的内容。
  • 如果标签内部有超过一层嵌套的标签,string属性返回None(空字符串)
    当需要列出标签对于的所有内容或找到非第一个标签时,需要用到BeautifulSoup的find()和find_all()方法,这两个方法会遍历整个HTML文档,按照条件返回标签内容。
    BeautifulSoup.find_all(name,attrs,recursive,string,limit)
    根据参数找到对应的标签,返回列表类型。

中国大学排名爬虫

网页链接地址
软科中国最好大学排名2016
大学排名爬虫需要3个步骤

  1. 从网络上获取网页内容
  2. 分析网页内容并提取有用数据到恰当的数据结构中
  3. 利用数据结构展示或进一步处理数据
    网页源代码:




    代码中每个td标签包含大学排名表格的一个列数值,与表头一一对应。因此。如果要获得其中的数据,需要首先找到<tr></tr>标签,并遍历其中每个<td></td>标签,获取其值写入程序的数据结构中。

import requests
from bs4 import BeautifulSoup
allUniv=[]
def getHTMLText(url):
    try:
        r=requests.get(url,timeout=30)#用get方法打开连接,设定每次请求超时时间为30秒
        r.raise_for_status()  #如果状态不是200,引发异常
        r.encoding='utf-8' #设定编码为utf-8
        return r.text

    except:
        return ""

def fillUnivList(soup):
    data=soup.find_all("tr")#获取所有的tr
    for tr in data:
        ltd=tr.find_all("td")#获取tr中的所有的td
        if len(ltd)==0:
            continue
        singleuniv=[]
        for td in ltd:
            singleuniv.append(td.string) #提取td标签中的内容
        allUniv.append(singleuniv)
def printUnivList(num):
    print("{:^4}{:^10}{:^5}{:^8}{:^10}".format("排名","学校名称","省市","总分","培养规模"))
    for i in range(num):
        u=allUniv[i]
        print("{:^4}{:^10}{:^5}{:^8}{:^10}".format(u[0],u[1],u[2],u[3],u[6]))
def main(num):
    url="http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html"
    html=getHTMLText(url)
    soup=BeautifulSoup(html,"html.parser")
    fillUnivList(soup)
    printUnivList(num)

main(10)

结果



格式太乱,解决方法:
替换填充字符,采用“中文全角空格”代替默认使用的“西文半角空格”,这能够对齐中文字符出现的列。

def printUnivList(num):
    print("{1:^2}{2:{0}^10}{3:{0}^6}{4:{0}^4}{5:{0}^10}".format(chr(12288),"排名","学校名称","省市","总分","培养规模"))
    for i in range(num):
        u=allUniv[i]
        print("{1:^4}{2:{0}^10}{3:{0}^5}{4:{0}^8}{5:{0}^10}".format(chr(12288),u[0],u[1],u[2],u[3],u[6]))

搜索关键字自动提交

import requests
from bs4 import BeautifulSoup
import re
import json
def getKeywordResult(keyword):
    url="http://www.baidu.com/s?wd="+keyword
    try:
        r=requests.get(url,timeout=30)
        r.raise_for_status()
        r.encoding='utf-8'
        return r.text
    except:
        return ""

def parsetLinks(html):
    soup=BeautifulSoup(html,"html.parser")
    links=[]
    for div in soup.find_all('div',{'data-tools':re.compile('title')}):
        data=div.attrs['data-tools']
        d=json.loads(data)
        links.append(d['title'])
    return links
def main():
    html=getKeywordResult("Python语言程序设计语言")
    ls=parsetLinks(html)
    count=1
    for i in ls:
        print("[{:^3}]{}".format(count,i))
        count+=1
main()

结果


相关文章

  • Python学习笔记(八)

    第八章 程序设计方法论 人生苦短,请用Python。Life is short. You need Python....

  • python学习第八章

    pyinstaller库的使用 pyinstaller是一个将Python语言脚本(.py)打包成可执行文件的第三...

  • 2020年5月6日&7日 第八章 Python第三方库安装及常用

    第八章 Python第三方库安装及常用库介绍 8.1 Python第三方库简介 8.2 Python第三方库安装 ...

  • python学习笔记目录

    Python学习笔记目录(倒序) Python学习-异常 Python学习-面向对象 Python学习-文件系统 ...

  • 机器学习(8)

    本章节是对我学习完机器学习(周志华)第八章 所做出来的总结 第八章 集成学习 8.1 个体与集成 集成学习:通过构...

  • 职场人士如何更有效地学习

    大家好,我是Erin,我们继续学习《认知天性》,今天继续学习第八章。 第八章对本书的学习方法做了归纳,并针对学生、...

  • 一个科学有效的学习过程是怎样的?

    大家好,我是Erin,我们继续学习《认知天性》,今天开始学习第八章。 第八章对本书的学习方法做了归纳,并针对学生、...

  • 一套有效的上课流程

    大家好,我是Erin,我们继续学习《认知天性》,今天开始学习第八章。 第八章对本书的学习方法做了归纳,并针对学生、...

  • python学习笔记

    python学习笔记 今天开始学习python,今天主要学习了python的基础知识,学习的教材是《python编...

  • Python学习之模块

    Python学习目录 在Mac下使用Python3 Python学习之数据类型 Python学习之函数 Pytho...

网友评论

      本文标题:python学习第八章

      本文链接:https://www.haomeiwen.com/subject/yotdhqtx.html