财富2019年世界500强企业爬虫(爬虫学习实践项目)

# coding = utf-8
# 500强企业爬取 --爬取《财富》网页上的500强企业信息
# writer: Shihan Wong

import requests , bs4
from bs4 import BeautifulSoup

# getHTMLtext函数功能:利用requests模块获得HTML代码 ,形式参数url为网页统一资源定位符
def getHTMLtext(url):
    try:
        re = requests.get(url ,timeout = 30)                        # 获取HTNL源码
        re.raise_for_status()                                       # 查看状态
        re.encoding = re.apparent_encoding                          # 替换编码
        return re.text                                              # 返回HTML文本
    except Exception as e:                                          # 如果错误,输出e
        print(e)

# saveCompany函数功能:利用BeautifulSoup类解析HTML文本,然后保存解析后的信息
def sveCompany(clist , html):                                       # 形参clist为用户定义用来储存爬取信息的列表,html为之前返回的HTML文本
    soup = BeautifulSoup(html , "html.parser")                      # 解析HTML文本
    for tr in soup.find('tbody').children:                          # 500强信息经查看后发现在'tbody'标签内,遍历其子标签
        if isinstance(tr , bs4.element.Tag):                        # 判断tr是否为标签
            tds = tr('td')                                          # 500强信息'tbody'标签的子标签'tr'标签的子标签'td'内,遍历返回子标签列表后保存在变量tds内
            clist.append([tds[0].string , tds[2].string , tds[5].string])                       # 将爬取的信息保存在设定好的列表内,第一个为排名,二为企业名称,三为国家

# printCompany函数功能:输出保存后的企业信息
def printCompany(clist , num):                                      # 形参clist为之前保存得企业信息,num为用户输入的数字,控制打印的企业数量
    print("{0:^10}\t{1:{3}^50}\t{2:{3}^5}".format("排名" , "企业名称" , "国家" , chr(12288)))    # 打印输出标题
    for i in range(num):
        u = clist[i]
        print("{0:^10}\t{1:{3}^50}\t{2:{3}^5}".format(u[0] , u[1] , u[2] , chr(12288)))        # 打印输出企业信息

def main():                                                           # 定义主函数,调用getHTMLtext(),saveCompany(),printCompany()函数
    sinfo = []
    url = 'http://www.fortunechina.com/fortune500/c/2019-07/22/content_339535.htm'
    html = getHTMLtext(url)
    sveCompany(sinfo , html)
    printCompany(sinfo , 500)

main()

后面的的国家字段我没有弄好,一直没有给它对其,如果有其他同学知道怎么给它对其看到这文章的话,希望可以在下方告诉我,一同进步。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值