别人家的几G面经怎么获取的?爬虫一键爬取即可,躺好直接看!!!

Posted Code皮皮虾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了别人家的几G面经怎么获取的?爬虫一键爬取即可,躺好直接看!!!相关的知识,希望对你有一定的参考价值。

前言

博主 常年游荡于牛客面经区,总结了字节、阿里、百度、腾讯、美团等等大厂的高频考题,但是今天,我教大家如何进行面经爬取,如果能帮到各位小伙伴,麻烦一件三连多多支持,感激不敬!!!

本次爬取以Java面经为例,学会的小伙伴可以按照规律爬取牛客任意面经

在这里插入图片描述



教学

进入Java面经区,打开控制台刷新请求

可以发现,发送浏览器中的URL,得到的响应内容是没有面经的,那么面经的数据从何而来???不要着急,那么多请求我们接着看!

往下滑,可以看见带json的请求,经验告诉我就是这个请求

复制该URL,我们去浏览器请求该URL,可发现我们得到了面经的数据

但是,面经是JSON格式,我们可以复制到在线json解析工具去查看,如下

可以看到data下的discussPosts下保存着所有的帖子即面经信息

但是这个json不像我以前见到的,这个json串没有直接保存帖子详情页的URL,但是我们可以提供过访问路径发现规律

可以看见访问路径有个675866,就是对应json串中的postId,而后面的参数是可以省略的



小技巧

想必单页面经是肯定不能满足各位小伙伴的,那么如果进行多页爬取呢,不要着急,我来为大家总结规律,也希望小伙伴们能一键三连哦!!!

一样的套路,如下图是C++区域的面经JSON字符串,应该不用我多教了吧
在这里插入图片描述

完整代码

如果有新手,可以看看我的爬虫教学索引哦,练完包你熟练掌握!!!

开源爬虫实例教程目录索引

import requests
import json
import os
from bs4 import BeautifulSoup

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/91.0.4472.114 Safari/537.36"
}


path = "./面经"


symbol_list = ["\\\\", "/", "<", ":", "*", "?", "<", ">", "|","\\"","&amp;"]

#替换掉标题字符,因为如果有这些字符是不能保存到txt中的
def replaceTitle(title):
    for i in symbol_list:
        if title.find(str(i)) != -1:
            title = title.replace(str(i)," ")

    return title

#获取详情页URL
def getDetail_Url(tmp_path,json_str):
    discussPosts = json_str['data']['discussPosts']
    for discussPost in discussPosts:
        title = discussPost['postTitle']
        detail_url = "https://www.nowcoder.com/discuss/" + str(discussPost['postId'])
        detail_response = requests.get(url=detail_url,headers=headers)
        getDetailData(tmp_path,title,detail_response)


#请求详情页获取数据
def getDetailData(tmp_path,title,detail_response):
    detailData = BeautifulSoup(detail_response.text,"html.parser")
    div_data = detailData.find(class_="post-topic-main").find_all("div")
    title = replaceTitle(title)
    print("正在保存" + tmp_path + ":" + title)
    with open(tmp_path + "/" + title + ".txt",'w',encoding='utf-8') as f:
        for i in div_data:
            try:
                #遇到class为clearfix的标签即可跳出循环,因为需要的数据都已经获取到了,该标签下的数据是不需要的
                if i['class'].count('clearfix') != 0:
                    break
            except:
                pass
            tmp_text = i.text.strip('\\n').strip()
            f.write(tmp_text + "\\n")
    f.close()



# 开始
if __name__ == '__main__':
    url = "https://www.nowcoder.com/discuss/experience/json?token=&tagId=639&companyId=0&phaseId=0&order=3&query=&page=1"
    for i in range(1,3):
        url = url + str(i)
        if not os.path.exists(path):
            os.mkdir(path)
        tmp_path = path + "/第" + str(i) + "页面试题"
        if not os.path.exists(tmp_path):
            os.mkdir(tmp_path)
        response = requests.get(url=url,headers=headers)
        json_str = json.loads(response.text)
        getDetail_Url(tmp_path,json_str)

结果展示



CSDN独家福利降临!!!


最近CSDN有个独家出品的活动,也就是下面的《Python的全栈知识图谱》,路线规划的非常详细,尺寸 是870mm x 560mm 小伙伴们可以按照上面的流程进行系统的学习,不要自己随便找本书乱学,要系统的有规律的学习,它的基础才是最扎实的,在我们这行,《基础不牢,地动山摇》尤其明显。

最后,如果有兴趣的小伙伴们可以酌情购买,为未来铺好道路!!!

在这里插入图片描述



最后

我是 Code皮皮虾,一个热爱分享知识的 皮皮虾爱好者,未来的日子里会不断更新出对大家有益的博文,期待大家的关注!!!

创作不易,如果这篇博文对各位有帮助,希望各位小伙伴可以一键三连哦!,感谢支持,我们下次再见~~~

分享大纲

大厂面试题专栏


Java从入门到入坟学习路线目录索引


开源爬虫实例教程目录索引

更多精彩内容分享,请点击 Hello World (●’◡’●)


在这里插入图片描述

以上是关于别人家的几G面经怎么获取的?爬虫一键爬取即可,躺好直接看!!!的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫怎么爬取左右没有标签的内容

爬虫系列之链家的信息爬取及数据分析

怎么攻击别人wifi?

别人用钱,而我用python爬虫爬取了一年的4K高清壁纸

python爬虫教程:《利用Python爬取表情包》

Python爬虫一键爬取海量表情包,分分钟碾压斗图狂魔!附源码