网页数据的获取----相关的Python库

目录

  • 网页数据获取的相关库
  • request库
  • beautifulsoup4库

正文

网页数据获取的相关库

  • Python语言提供了许多与URL和网页处理相关的库,使得Python非常适合网页链接和网页处理。常用的与URL和网页处理相关的库有requestsbeautifulsoup4库。
    • requests库能够获取网页的源代码,即网页的html文档。
    • beautifulsoup4库,也称beautifulSoup库或bs4库,也是python语言获取网络数据常用的第三方库,是解析,遍历html文档标签的功能库,通过解析html文档为用户提供需要获取的数据。
      • 安装:
        pip install requests
        pip install beautifulsoup4
    • 学习参考网址
Python爬虫利器二之Beautiful Soup的用法https:/ /www.cnblogs.com/BigFishFly/p/6380014.html
Python第三方库requests详解http://www.zhidaow.com/post/python-requests-install-and-brief-introduction

requests库

  • 网页请求函数requests.get() 构造一个请求服务器的request对象,是获取网页内容最常用的方法,其语法为:
  • r=requests.get(url,params=None, ** kwargs)
  • 其中url表示拟获取网页的url链接,url链接必须采用HTTPHTTPS方式访问;params表示url中的额外参数,字典或字节流格式,可选;** kwargs表示12个控制访问的参数均为可选,常使用的有参数timeout、headers、cookies在调用requests.get()函数后,返回的网页内容会保存为一个Response对象r
  • Response对象r包含服务器返回的所有返回信息,也包含请求的Request信息,其常用属性如表所示
方法名使用方法数据类型说明
status_coder.status_codeint请求的返回状态
textr.textstrurl对应的页面内容
headersr.headersdicturl对应的头信息
contentr.contentbytesurl对应的页面内容的二进制形式
encodingr.encodingurl对应的页面的编码方式
apparent_encodingr.apparent_encoding从内容中分析出的编码方式

【例】使用requests库获取大学计算机网页案例网页源代码。
【代码如下】

import requests    #引入相关库
r=requests.get("http://112.25.158.3:8000/%E5%A4%A7%E5%AD%A6%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E9%A1%B5%E6%A1%88%E4%BE%8B.html")    #获取网页源代码赋值给对象r
r.encoding=r.apparent_encoding    #对r设置编码
print(r.text[90:])    #输出90往后的页面内容

【运行结果】
在这里插入图片描述
在这里插入图片描述

  • 将获取网页内容的程序封装为函数,获取网页内容的一般通用框架可以概括为:
import requests    #引入相关库
def getHTMLText(url):
	try:
		r=requests.get(url)
		r.raise_for_status()
		r.ecoding=r.apparent_encoding
		return r.text
	expect:
		r="fail"
		return r

if __name__=="__main__":    #程序的开始
	url=input("请输入网址:")
	#调用函数getHTMLText()获取页面内容赋值text
	text=getHTMLText(url)
	print(text)

beautifulsoup4库

  • 使用HTML文档建立的网页页面一般非常复杂,除了有用的内容信息外,还包括大量用于页面格式的元素,直接解析一个网页需要深入了解HTML语法,比较复杂。 beautifulsoup4库将网页页面格式解析部分封装成函数,提供了若干处理函数获取网页信息。

  • beautifulsoup4库在使用之前,需要进行引用,由于这个库的名字非常特殊且采用面向对象方式组织,可以用from…import方式从库中直接引用beautifulSoup类,使用方法如下:
    from bs4 import BeautifulSoup
    soup=BeautifulSoup("< html>A Html Text< /html>",解析器)

  • 构建一个beautifulSoup对象需要两个参数,第一个参数是将要解析的HTML文本字符串,第二个参数告诉beautifulSoup使用哪个解析器来解析HTML,解析器负责把HTML解析成相关的对象,"html.parser"是Python内置的解析器。

  • BeautifulSoup4将html的源代码转换成一个复杂的树状结构,html的源代码里的每一个标签都是BeautifulSoup对象,如 < head>、< title>、< body>等。html的源代码中的主要结构变成了BeautifulSoup对象的一个个属性,如表所示,BeautifulSoup对象的常用属性,每个属性均为HTML页面里标签元素。

属性描述
headHTML页面的< head>内容
titleHTML页面标题,由< title>标记
bodyHTML页面的< body>内容
pHTML页面的第一个< p>内容
stringsHTML页面所有呈现在Web上的字符串
stripped_stringsHTML页面所有呈现在Web上的非空格字符串
  • BeautifulSoup4HTML进行解析,获取网页中数据时,通常对不同标签的属性值进行查找BeautifulSoup中内置了一些查找函数,常用的是find_all()和find()函数。find_all()函数的定义如下:
    find_all(tag,attributes,recursive,text,limit,keywords)
    其中tag代表标签参数,text表示文本参数,attributes代表标签的属性参数,recursive表示递归参数,limit代表限制参数,keywords代表关键词参数,用于筛选标签的属性。
    返回一个列表类型,存储查找的结果
from bs4 import BeautifulSoup    #引入beautifulsoup4库
import requests    #引入requests库
def getHTMLText(url):    #获取网页页面内容函数,获取成功返回页面内容,获取失败,返回"fail"
        try:
            r=requests.get(url)
            r.raise_for_status()
            r.encoding=r.apparent_encoding
            return r.text
        except:
            r="fail"
            return r
def find1(soup):
            h=soup.find_all({"h1","h2"})
            print("输出网页中的标题:")
            for hh in h:
                print(hh)
            print("---------------------------------")
if __name__=="__main__":    #程序的开始
    url="http://112.25.158.3:8000/%E5%A4%A7%E5%AD%A6%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E9%A1%B5%E6%A1%88%E4%BE%8B.html"     #获取网页网址
    text=getHTMLText(url)
    soup=BeautifulSoup(text,'html.parser')    #这里出了一个小插曲,已解决,如果遇到类似问题,可以借鉴一下这篇博客,链接https://blog.csdn.net/matlab001/article/details/83856642
    find1(soup)    #调用函数find1

知识点整理不易,如果能够帮助到你,还请给个免费的赞支持一下哦!😉感谢阅读!

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张同学啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值