抓取网页数据(string定义函数getHTMLText()获取网页信息定义printUnivList )

优采云 发布时间: 2022-04-02 04:07

  抓取网页数据(string定义函数getHTMLText()获取网页信息定义printUnivList

)

  Python爬虫--2019大学排名数据爬取准备输入:大学排名URL连接输出:大学排名信息屏幕输出所需库:requests,bs4获取网页信息的思路提取网页中的内容,放入数据结构,数据结构用于显示和输出结果。编程定义函数getHTMLText()获取网页信息。定义函数UnivList()放入数据结构定义函数printUnivList()中,输出到屏幕上。

  总体:

  查看url源码的步骤

  分析源码看看要爬取的内容在哪里

  

  从图中可以看出,排名信息在标签中

  具体信息为标签下标签中的字符串

  定义函数getHTMLText

  def getHMLText(url):

'''

获取url信息,输出url的内容,来抓取网页的信息

'''

try:

r = request.get(url, timeout=30)

r.raise_for_status()

r.encoding = r.apparent_encoding

return r.text

except:

return "抓取失败!"

  定义函数UnivList()

  def UnivList(ulist, html):

'''

提取html中的数据,放入到ulist列表,完成数据提取

'''

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

for tr in soup.find('tbody').children:

if isinstance(tr, bs4.element.Tag): # 判断tr的子节点是否为非属性字符串

tds = tr('td')

# print(tds)

# print('#' * 30)

# print(tds[0], tds[0].string)

# print('#' * 30)

# print(tds[1], tds[1].string)

# print('#' * 30)

# print(tds[2], tds[2].string)

# print('#' * 30)

# print(tds[3], tds[3].string)

ulist.append([tds[0].string, tds[1].string, tds[3].string, tds[2].string])

  定义函数 printUnivList()

  def printUnivList(ulist, num):

'''

将ulist列表信息打印,num表示打印前多少排名的学校

'''

print("{:^3}\t{:^10}\t{:^20}\t{:^30}".format("排名", "学校名称", "总分", '地址'))

for i in range(num):

u = ulist[i]

print("{:^3}\t{:^10}\t{:^20}\t{:^30}".format(u[0], u[1], u[2], u[3]))

  主函数 main()

  def main():

'''

实现整个代码

'''

ulist = []

url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html'

html = getHTMLText(url)

UnivList(ulist, html)

printUnivList(ulist, 100)

  调用主函数

  main()

  完整代码

  import requests

import bs4

from bs4 import BeautifulSoup

def getHMLText(url):

'''

获取url信息,输出url的内容,来抓取网页的信息

'''

try:

r = request.get(url, timeout=30)

r.raise_for_status()

r.encoding = r.apparent_encoding

return r.text

except:

return "抓取失败!"

def UnivList(ulist, html):

'''

提取html中的数据,放入到ulist列表,完成数据提取

'''

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

for tr in soup.find('tbody').children:

if isinstance(tr, bs4.element.Tag): # 判断tr的子节点是否为非属性字符串

tds = tr('td')

# print(tds)

# print('#' * 30)

# print(tds[0], tds[0].string)

# print('#' * 30)

# print(tds[1], tds[1].string)

# print('#' * 30)

# print(tds[2], tds[2].string)

# print('#' * 30)

# print(tds[3], tds[3].string)

ulist.append([tds[0].string, tds[1].string, tds[3].string, tds[2].string])

def printUnivList(ulist, num):

'''

将ulist列表信息打印,num表示打印前多少排名的学校

'''

print("{:^3}\t{:^10}\t{:^20}\t{:^30}".format("排名", "学校名称", "总分", '地址'))

for i in range(num):

u = ulist[i]

print("{:^3}\t{:^10}\t{:^20}\t{:^30}".format(u[0], u[1], u[2], u[3]))

def main():

'''

实现整个代码

'''

uinfo = []

url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html'

html = getHTMLText(url)

fillUnivList(uinfo, html)

printUnivList(uinfo, 100)

main()

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线