Python是不是被严重高估了?

写在前面

最新TIOBE编程语言排行榜,Python稳居榜首,成为最受欢迎国民度最高的编程语言。
在这里插入图片描述
很多同学又听说Python简单易学,不由心动,那么,Python是不是被严重高估了呢

行内程序员有话要说,其实我觉得并没有。

学习了Python其实可以做很多事情,首先可以找一份好工作!!

在这里插入图片描述
学了Python我们可以选的工作:

web开发工程师
人工智能工程师
数据分析师
爬虫工程师
自动化运维工程师
自动化测试工程师

当然,如果你想自己做一些有趣的事情,比如 爬一下喜欢的图片,爬某个网站,爬取音乐、爬取表情包,或者是抢火车票都可以;还可以写写小游戏;写一些有趣的小工具。

下面来展示一下爬取表情包吧!

开发工具

Python版本:3.6.4

相关模块:

🔺scrapy模块;
🔺requests模块;
🔺fake_useragent模块;
🔺以及一些python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

原理简介

原理其实蛮简单的,因为之前就知道知乎有个api一直可以用:

https://www.zhihu.com/node/QuestionAnswerListV2

post请求这个链接,携带的数据格式如下:

data = {
           'method': 'next',
           'params': '{"url_token":%s,"page_size":%s,"offset":%s}'
}
1. url_token:
问题id,譬如问题“https://www.zhihu.com/question/302378021”的问题id为302378021
2. page_size:
每页回答的数量(知乎最大只能是10)
3. offset:
当前显示的回答的偏移量

就可以获得该问题下的所有回答啦,然后用正则表达式提取每个回答下的所有图片链接就OK了。

具体实现的时候用的scrapy,先新建一个scrapy项目:

scrapy startproject zhihuEmoji

然后在spiders文件夹下新建一个zhihuEmoji.py文件,实现我们的爬虫主程序:

'''知乎表情包爬取'''
class zhihuEmoji(scrapy.Spider):
    name = 'zhihuEmoji'
    allowed_domains = ['www.zhihu.com']
    question_id = '302378021'
    answer_url = 'https://www.zhihu.com/node/QuestionAnswerListV2'
    headers = {
                'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
                'Accept-Encoding': 'gzip, deflate'
            }
    ua = UserAgent()
    '''请求函数'''
    def start_requests(self):
        offset = -10
        size = 10
        while True:
            offset += size
            data = {
                        'method': 'next',
                        'params': '{"url_token":%s,"page_size":%s,"offset":%s}' % (self.question_id, size, offset)
                    }
            self.headers['user-agent'] = self.ua.random
            yield scrapy.FormRequest(url=self.answer_url, formdata=data, callback=self.parse, headers=self.headers)
    '''解析函数'''
    def parse(self, response):
        # 用来保存图片
        if not os.path.exists(self.question_id):
            os.mkdir(self.question_id)
        # 解析响应获得问题回答中的数据, 然后获取每个回答中的图片链接并下载
        item = ZhihuemojiItem()
        answers = eval(response.text)['msg']
        imgregular = re.compile('data-original="(.*?)"', re.S)
        answerregular = re.compile('data-entry-url="\\\\/question\\\\/{question_id}\\\\/answer\\\\/(.*?)"'.format(question_id=self.question_id), re.S)
        for answer in answers:
            item['answer_id'] = re.findall(answerregular, answer)[0]
            image_url = []
            for each in re.findall(imgregular, answer):
                each = each.replace('\\', '')
                if each.endswith('r.jpg'):
                    image_url.append(each)
            image_url = list(set(image_url))
            for each in image_url:
                item['image_url'] = each
                self.headers['user-agent'] = self.ua.random
                self.download(requests.get(each, headers=self.headers, stream=True))
                yield item
    '''下载图片'''
    def download(self, response):
        if response.status_code == 200:
            image = response.content
            filepath = os.path.join(self.question_id, str(len(os.listdir(self.question_id)))+'.jpg')
            with open(filepath, 'wb') as f:
                f.write(image)

其中ZhihuemojiItem()用来存储我们爬取的所有图片链接和对应的回答id,具体定义如下:


class ZhihuemojiItem(scrapy.Item):
    image_url = scrapy.Field()
    answer_id = scrapy.Field()

OK,大功告成

效果展示

在cmd窗口运行如下命令即可:

scrapy crawl zhihuEmoji -o infos.json -t json

结语

本文用爬取表情包的案例,这是比较初级的爬虫知识,还有很多优秀的python爬虫库和框架等待后续去学习。
当然,掌握本文讲的知识点,你就已经入门python爬虫了。加油呀!

最后这里我整理了一份2022年最新版全套python资料,你想要的我都有,有需要的扫码免费领取。
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值