【Python爬虫】2024年中国500强排行榜数据爬取附Pyhton源码

Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

一个小妹要的,忙活了半天,很久没写了果然退步了,还是个人太菜,太渣了!

很久没有写Python爬虫了,有多久呢?一个礼拜,半个月还是一个月,太久了,导致手感稀疏,连很多库的用法都快忘得一干二净了,果然学习如逆水行舟,不进则退!

目标网站:

980269c19db5843f08bf9f076029cbb3.png

爬取目标:

页面上2024年中国500强排行榜所有数据

d0b70eabf7d7503d77f411d476bf4835.png

存在问题:

页面数据显示不完整,数据的获取存在隐藏展示

打开APP查看完整关键数据

29d1c4a80a09d3844718b246734c4d3c.png

解决思路:

其实数据是通过js点击加载,隐藏的关键数据可以通过js获取到,关键就是数据获取及整理加工

4d97acd58bf7055f8def47c1ce42f328.png

分享几个关键的地方:

1.写入csv文件

#写入csv文件
def write_scv(name,data):
    opencsv=open(f'{name}.csv','a+')
    print(">> 关键词数据正在写入csv..")
    for i in data:
        print (i)
        opencsv.write('%s\n'%i)
    print(">> 关键词数据写入csv成功!")

2.写入excel格式文件

#保存数据为excel格式
def bcsj(name,data):
    workbook = xlwt.Workbook(encoding='utf-8')
    booksheet = workbook.add_sheet('Sheet 1', cell_overwrite_ok=True)
    title = [['排名', '公司名称', '公司介绍', '营收(百万美元)']]
    title.extend(data)
    #print(title)
    for i, row in enumerate(title):
        for j, col in enumerate(row):
            booksheet.write(i, j, col)
    workbook.save(f'{name}.xls')
    print(f"保存关键词数据为 {name}.xls 成功!")

3.关键数据的获取

初始,以为是一个json数据格式,经过反复调试发现获取不到,故采用最笨的方法直接用正则获取网页关键数据

6cc253e288bb13617d4e32325c33534b.png

附完整源码供参考:

#500强数据获取
#http://www.caifuzhongwen.com/fortune500/paiming/china500/2024_%e4%b8%ad%e5%9b%bd500%e5%bc%ba.htm
# -*- coding: UTF-8 -*-
#Author@公众号:云搞机@微信:huguo00289


import requests
import re
import xlwt
from lxml import etree


#写入csv文件
def write_scv(name,data):
    opencsv=open(f'{name}.csv','a+')
    print(">> 关键词数据正在写入csv..")
    for i in data:
        print (i)
        opencsv.write('%s\n'%i)
    print(">> 关键词数据写入csv成功!")




#保存数据为excel格式
def bcsj(name,data):
    workbook = xlwt.Workbook(encoding='utf-8')
    booksheet = workbook.add_sheet('Sheet 1', cell_overwrite_ok=True)
    title = [['排名', '公司名称', '公司介绍', '营收(百万美元)']]
    title.extend(data)
    #print(title)
    for i, row in enumerate(title):
        for j, col in enumerate(row):
            booksheet.write(i, j, col)
    workbook.save(f'{name}.xls')
    print(f"保存关键词数据为 {name}.xls 成功!")


def bfbcsj(name,data):
    workbook = xlwt.Workbook(encoding='utf-8')
    booksheet = workbook.add_sheet('Sheet 1', cell_overwrite_ok=True)
    title = [['百万美元', '年增减%']]
    title.extend(data)
    #print(title)
    for i, row in enumerate(title):
        for j, col in enumerate(row):
            booksheet.write(i, j, col)
    workbook.save(f'{name}.xls')
    print(f"保存关键词数据为 {name}.xls 成功!")


def get_data():
    headers={
        'cookie':'acw_tc=2ff616a117325876497522346efe9740f02a9d76bf99071a9a72c8ca9b; cdn_sec_tc=2ff616a117325876497522346efe9740f02a9d76bf99071a9a72c8ca9b',
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36'
    }
    url="http://www.caifuzhongwen.com/fortune500/paiming/china500/2024_%e4%b8%ad%e5%9b%bd500%e5%bc%ba.htm"
    response=requests.get(url=url,headers=headers,timeout=6)
    print(response.status_code)
    html=response.content.decode('utf-8')
    print(html)
    tree=etree.HTML(html)


    ranks=tree.xpath('//tbody/tr/td/i[@class="rank"]/text()')
    print(ranks)
    companys=tree.xpath('//tbody/tr/td/a/text()')
    print(companys)
    hides=tree.xpath('//tbody/tr/td/span[@class="hide"]/text()')
    print(hides)
    rights=tree.xpath('//tbody/tr/td[@align="right"]/text()')
    print(rights)


    cdatas=[]
    for rank,company,hide,right in zip(ranks,companys,hides,rights):
        cdata=rank,company,hide,right
        print(cdata)
        cdatas.append(cdata)


    name="中国500强企业"
    bcsj(name,cdatas)


    companyDetails=re.findall(r'var companyDetails =(.+?)// xyh 循环函数',html,re.S)[0]
    companyDetails=companyDetails.replace('\n                        "]','')
    print(companyDetails)
    #营业收入
    item1=re.findall(r"item1: '营业收入',item2: '(.+?)',item3: '(.+?)'",companyDetails,re.S)
    print(item1)
    print(len(item1))
    bfbcsj("营业收入",item1)
    #利润
    item2=re.findall(r"item1: '利润',item2: '(.+?)',item3: '(.+?)'",companyDetails,re.S)
    print(item2)
    print(len(item2))
    bfbcsj("利润",item2)
    #资产
    item3=re.findall(r"item1: '资产',item2: '(.+?)',item3: ''",companyDetails,re.S)
    print(item3)
    print(len(item3))
    write_scv("资产",item3)
    #股东权益
    item4=re.findall(r"item1: '股东权益',item2: '(.+?)',item3: ''",companyDetails,re.S)
    print(item4)
    print(len(item4))
    write_scv("股东权益",item4)
    #净利率
    item5=re.findall(r"item1: '净利率',item2: '(.+?)',item3: ''",companyDetails,re.S)
    print(item5)
    print(len(item5))
    write_scv("净利率",item5)
    #资产收益率
    item6=re.findall(r"item1: '资产收益率',item2: '(.+?)',item3: ''",companyDetails,re.S)
    print(item6)
    print(len(item6))
    write_scv("资产收益率",item6)




def main():
    get_data()


if __name__ == '__main__':
    main()

更多阅读:

Python爬虫练习网站闪职网字体反爬练手解析!

a98b533249c29c62d5edbce1a5637bd7.png

Python爬虫多线程爬取图片资源案例!

5bd3c487fe24194e9f4aa71e83f3af1c.png

Python爬虫,红点奖Red获奖作品爬取及文件下载!

0598dc58fb061c2b7ca42d6c8aad131d.png

往期精彩:

One Piece 海贼王动漫壁纸 Python 爬取!

8c58996f6322743c0d3fbd87a6eeac3d.jpeg

Python新浪博客图片异步爬虫!

ec957d5dcb97c957e854f5561a9a82af.png

某度图片多线程爬取附工具脚本助手!

38406e96ec3f5af6ec921a3f57bc2e6a.png

手把手教你Python多线程下载获取图片!

cc6c4f203225f3fd39369c251d6e2b4f.png

·················END·················

你好,我是二大爷,

革命老区外出进城务工人员,

互联网非早期非专业站长,

喜好python,写作,阅读,英语

不入流程序,自媒体,seo . . .

公众号不挣钱,交个网友。

读者交流群已建立,找到我备注 “交流”,即可获得加入我们~

听说点 “在看” 的都变得更好看呐~

关注关注二大爷呗~给你分享python,写作,阅读的内容噢~

扫一扫下方二维码即可关注我噢~

8266aa86a6d4c6a69e6aed3463eee2e6.jpeg

e3c28c540056f3dac3d7872677f5fb23.png

关注我的都变秃了

说错了,都变强了!

不信你试试

e100071054d70887297c8b260f12c31a.jpeg

扫码关注最新动态

公众号ID:eryeji

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值