我是靠谱客的博主 拉长毛巾,最近开发中收集的这篇文章主要介绍python bs4解析网页_application:bs4+requests对网页数据进行解析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

逻辑过程:

1.通过requests对网页进行爬取,返回网页html

2.通过bs4对网页数据进行解析,返回列表数据

3.格式化输出数据

函数式编程:

定义获取html数据函数,判断响应情况,返回网页resopense.text

定义解析函数:通过对数据函数返回内容进行解析,返回解析后的数据

定义展示函数:打印输出函数

定义运行函数:调用其他函数进行运行

亮点:

将所有数据解析放入一个列表中,在展示时,通过设定长度遍历解析数据所在列表,进行控制读取数据

问题及相关需要注意点:

soup.find('标签名').children:需要注意这里是否成功get了网页text,未成功可能会报错

soup.标签.string:当标签中有多个子标签时,会返回None,使用soup.标签.text;也可以find对应子标签然后获得string

https://blog.csdn.net/lin252931/article/details/105403723

string依旧存在问题,可能打印出来不能完全对齐,暂未找到解决方式

python代码实现:

由于本地不好使用爬虫,因此通过open读取网页的形式进行爬取

#中国大学排名定向爬虫

import requests

from bs4 import BeautifulSoup

import bs4

def getHtmltext(url):

try:

res=requests.get(url,timeout=30)

res.raise_for_status()

r.encoding=r.apparent_encoding

return r.text

except:

return " "

def open_html(name):

with open(name,'rb')as f:

html=f.read()

return html

def fillUnivList(urlist,html):

#提取数据

soup=BeautifulSoup(html,'html.parser')

for tr in soup.tbody.children:

#获取tbody标签所有子节点tr标签

if isinstance(tr,bs4.element.Tag):

#判断获得所有满足条件的标签

tds=tr('td')

#快速获取tr标签中的所有tds标签

urlist.append([tds[0].string,tds[1].text,tds[2].text])

cont=tds[1].find('a')

# 快速获取tr标签中的所有tds标签

urlist.append([tds[0].string.replace('n', '').replace('r', ''),cont.string.replace('n', '').replace('r', ''), tds[2].string.replace('n', '').replace('r', '')])

#格式化输出比较常用print函数的formate格式化字符串

def printUnivlist(urlist,num):

print("{0}t{1}t{2}".format('排名','学校','地区'))

for i in range(num):

u=urlist[i]

print("{0}t{1}t{2}".format(u[0],u[1],u[2]))

def main():

uinfo=[]

#url='view-source:http://www.shanghairanking.cn/rankings/bcur/2020'

#html=getHtmltext(url)

html=open_html('大学排名.html')

fillUnivList(uinfo,html)

printUnivlist(uinfo,20)#20 univs

main()

最后

以上就是拉长毛巾为你收集整理的python bs4解析网页_application:bs4+requests对网页数据进行解析的全部内容,希望文章能够帮你解决python bs4解析网页_application:bs4+requests对网页数据进行解析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部