爬虫小实例——定向爬取及优化输出格式

举报
yd_221104950 发表于 2020/12/03 23:39:03 2020/12/03
【摘要】 定向爬取的URL:http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html import requests from bs4 import BeautifulSoup import bs4 # 获得爬取的内容 def get_html_text(url): try: r = requests.get(url, t...

定向爬取的URL:http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html

import requests
from bs4 import BeautifulSoup
import bs4


# 获得爬取的内容 
def get_html_text(url): try: r = requests.get(url, timeout=30) r.raise_for_status() # 设置文本编码,如果是ISO-8859-1,中文会乱码 if r.encoding == "ISO-8859-1": r.encoding = r.apparent_encoding return r.text except: pass return ""


# 填充大学列表 
def fill_univ_list(ulist, html): soup = BeautifulSoup(html, 'html.parser') # 根据分析爬到的页面,我们要的内容在tbody的tr标签的td标签中 # 遍历tr标签 for tr in soup.find('tbody').children: # 使用isinstance要import bs4 # 检查遍历到的tr元素是不是标签,因为它有可能是个字符串,这不是我们想要的 if isinstance(tr, bs4.element.Tag): # 是tr标签,就取出它的td列表 tds = tr('td') # 获取td标签的内容 ulist.append([tds[0].string, tds[1].string, tds[2].string]) pass


# 打印前num名的大学
def print_univ_list(ulist, num): # {3}表示使用chr(12288)中文空格来填充 tplt = "{0:^10}\t{1:{3}^10}\t{2:^10}" # chr(12288)表示在不够位时填充中文空格,不设置的话,默认填充西文空格 print(tplt.format("排名", "学校", "总分", chr(12288))) for i in range(num): u = ulist[i] print(tplt.format(u[0], u[1], u[2], chr(12288)))


# 主函数,定义整个架构
def main(): uinfo = [] url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html' html = get_html_text(url) fill_univ_list(uinfo, html) # 打印前20所大学 print_univ_list(uinfo, 20)


if __name__ == "__main__": main()


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60

很有意思的,快来学习吧!

文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_40763897/article/details/97042944

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。