需要准备的环境:

(1)python3.8

(2)pycharm

(3)截取网络请求信息的工具,有很多,百度一种随便用即可。

第一:首先通过python的sqlalchemy模块,来新建一个表。

第二:通过python中的request模块接口的形式调取数据。

  思路:(1)先获取所有城市信息:需要用request模块中的【requests.session()】session对象保存访问接口需要用到的信息:例如cookies等信息。
(2)通过城市分组,再用正则表达式筛选来获取python的岗位信息。
其中多次用到列表生成器,以后要多注意这方面的冷知识;不然会有莫名的错误。、 代码思路:只要保证可复用即可,其实很简单,毕竟Python是一门”干净“的语言。
(1)先把请求方法抽集到一个方法中:
session.get(url(地址),headers(头信息),,timeout(时间),proxies(代理信息))
(2)先获取所有城市,利用列表生成器生成一个list把数据装进去。
(3)利用循环以城市分组拉去Python岗位信息。
for city in lagou.city_list:
调用拉取岗位信息的方法。
(4)导入multiprocessing模块,设置多线程加速抓取:multiprocessing.Pool(自定 int or long)
需要注意的是:必须利用代理,以及多线程拉取。否则效率低下,可能导致信息不全,时间太慢。

 

第三:将拉取的数据存入表中

  

思路:(1)由于拉取的是JSON格式,所以解读JSON格式,也是很繁琐的,需要把要的数据一条一条对应到固定的Key里,如图:

  

(2)利用session对象的query方法,可以过滤查询想要的数据。
session.query(Lagoutables.workYear).filter(Lagoutables.crawl_date==self.date).all()

  第四:利用前台模板,将数据可视化。

(1)首先需要通过编写JS文件,将几个图的数据放在一个方法里提高聚合,抽取出来提高可复用性。        (2)然后通过拼接把获取到的JSON格式的数据,按key:balue格式分配出来。
代码如下:
利用Ajax通信

 

 

结果展示:

主要代码展示:

第一部分:拉取数据。

(1)使用session保存cokkies信息。

self.lagou_session = requests.session()

(2)写一个request方法;用于请求数据。使用多线程,以及代理的方式来;否则会记录恶意IP,不能爬虫。

    def handle_request(self,method,url,data=None,info=None):
while True:
#加入阿布云的动态代理
proxyinfo = "http://%s:%s@%s:%s" % ('H1V32R6470A7G90D', 'CD217C660A9143C3', 'http-dyn.abuyun.com', '9020')
proxy = {
"http":proxyinfo,
"https":proxyinfo
}
try:
if method == "GET":
# response = self.lagou_session.get(url=url,headers=self.header,proxies=proxy,timeout=6)
response = self.lagou_session.get(url=url,headers=self.header,timeout=6)
elif method == "POST":
# response = self.lagou_session.post(url=url,headers=self.header,data=data,proxies=proxy,timeout=6)
response = self.lagou_session.post(url=url,headers=self.header,data=data,timeout=6)
except:
# 需要先清除cookies信息
self.lagou_session.cookies.clear()
# 重新获取cookies信息
first_request_url = "https://www.lagou.com/jobs/list_python?city=%s&cl=false&fromSearch=true&labelWords=&suginput=" % info
self.handle_request(method="GET", url=first_request_url)
time.sleep(10)
continue
response.encoding = 'utf-8'
if '频繁' in response.text:
print(response.text)
#需要先清除cookies信息
self.lagou_session.cookies.clear()
# 重新获取cookies信息
first_request_url = "https://www.lagou.com/jobs/list_python?city=%s&cl=false&fromSearch=true&labelWords=&suginput="%info
self.handle_request(method="GET",url=first_request_url)
time.sleep(10)
continue
return response.text

  (3)写一个具体的URL来拉取网页信息。比如:

#获取全国所有城市列表的方法
def handle_city(self):
city_search = re.compile(r'www\.lagou\.com\/.*\/">(.*?)</a>')
city_url = "https://www.lagou.com/jobs/allCity.html"
city_result = self.handle_request(method="GET",url=city_url)
#使用正则表达式获取城市列表
self.city_list = set(city_search.findall(city_result))
self.lagou_session.cookies.clear()

  第二部分:将拉取的数据存入数据库。

     将数据库字段与获取到的JSON数据对应,代码简单就不举例了。

主要是用到数据库的session信息;通过导包,获得该数据库连接的Session对象,然后操作数据库。

#插入数据
self.mysql_session.add(data)
#提交数据到数据库
self.mysql_session.commit()

  第三部分:将数据库数据以Echarts工具展示出来。

可以查看官网有教学:  https://www.echartsjs.com/zh/index.html

主要也是去修改js文件,比较简单;这里就不做示范了。

全部代码,可以去本人的Githup上下载。

注意:本次爬虫教学并不是本人所原创,只是分享一下学习结果。

python爬虫实战以及数据可视化的更多相关文章

  1. PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二手急速响应捡垃圾平台_3(附源码持续更新)

    说明 文章首发于HURUWO的博客小站,本平台做同步备份发布. 如有浏览或访问异常图片加载失败或者相关疑问可前往原博客下评论浏览. 原文链接 PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二 ...

  2. Python爬虫实战---抓取图书馆借阅信息

    Python爬虫实战---抓取图书馆借阅信息 原创作品,引用请表明出处:Python爬虫实战---抓取图书馆借阅信息 前段时间在图书馆借了很多书,借得多了就容易忘记每本书的应还日期,老是担心自己会违约 ...

  3. Python爬虫实战七之计算大学本学期绩点

    大家好,本次为大家带来的项目是计算大学本学期绩点.首先说明的是,博主来自山东大学,有属于个人的学生成绩管理系统,需要学号密码才可以登录,不过可能广大读者没有这个学号密码,不能实际进行操作,所以最主要的 ...

  4. Python爬虫实战六之抓取爱问知识人问题并保存至数据库

    大家好,本次为大家带来的是抓取爱问知识人的问题并将问题和答案保存到数据库的方法,涉及的内容包括: Urllib的用法及异常处理 Beautiful Soup的简单应用 MySQLdb的基础用法 正则表 ...

  5. Python爬虫实战五之模拟登录淘宝并获取所有订单

    经过多次尝试,模拟登录淘宝终于成功了,实在是不容易,淘宝的登录加密和验证太复杂了,煞费苦心,在此写出来和大家一起分享,希望大家支持. 温馨提示 更新时间,2016-02-01,现在淘宝换成了滑块验证了 ...

  6. Python爬虫实战三之实现山东大学无线网络掉线自动重连

    综述 最近山大软件园校区QLSC_STU无线网掉线掉的厉害,连上之后平均十分钟左右掉线一次,很是让人心烦,还能不能愉快地上自习了?能忍吗?反正我是不能忍了,嗯,自己动手,丰衣足食!写个程序解决掉它! ...

  7. Python爬虫实战二之爬取百度贴吧帖子

    大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不 ...

  8. python爬虫实战——5分钟做个图片自动下载器

      python爬虫实战——图片自动下载器 制作爬虫的基本步骤 顺便通过这个小例子,可以掌握一些有关制作爬虫的基本的步骤. 一般来说,制作一个爬虫需要分以下几个步骤: 分析需求(对,需求分析非常重要, ...

  9. Python 爬虫实战(二):使用 requests-html

    Python 爬虫实战(一):使用 requests 和 BeautifulSoup,我们使用了 requests 做网络请求,拿到网页数据再用 BeautifulSoup 解析,就在前不久,requ ...

  10. 转 Python爬虫实战二之爬取百度贴吧帖子

    静觅 » Python爬虫实战二之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 ...

随机推荐

  1. vue配置scss全局样式

    安装插件 npm install sass --save-dev 在src文件夹下创建styles文件夹,并创建以下文件 index.scss: scss的入口文件 // 引入清除默认样式 @impo ...

  2. iview 多弹框,显示z-index 不对,被遮挡的解决方案 goTop函数 modal Drawer 抽屉

    iview 多弹框,显示z-index 不对,被遮挡的解决方案 goTop函数 modal 原因 弹多个modal框的时候,会被遮挡,导致后显示的框在下面 解决原理 获取当前弹框的z-index,然后 ...

  3. 玉蟾宫(悬线dp)

    求最大子矩阵一般用采用悬线法 (包好用的牢底) 悬线法: [ 以这道题为例,我们将R称为障碍格子,将F称为非障碍格子] 我们选择任意一个非障碍格子,引出三条直线:左直 右直 上直 随后从这个点出发,分 ...

  4. 什么叫运行时的Java程序?

    Java程序的运行包含编写.编译和运行三个主要步骤. 1.在编写阶段: 开发人员在Java开发环境中输入程序代码,形成后缀名为.java的Java源文件. 2.在编译阶段: 使用Java编译器对源文件 ...

  5. 像使用stl一样使用线段树 ——AtCoder Library(转载https://zhuanlan.zhihu.com/p/459579152)

    地址:https://zhuanlan.zhihu.com/p/459579152 我这里翻译一下官方的文档. 首先需要满足几个性质. (注意 ∗ 是个操作,不是单纯的一个乘号) 1)操作满足结合律 ...

  6. 计算机网络-DNS以及FastGitHub

    前言 你是否观察到过这种现象,在访问Github时,有的时候能正常访问,有的时候再次刷新就访问不了,那么能不能有什么办法能一直访问.答案是有,就是在DNS层面能保证一直稳定获取可用并且快速的IP,这就 ...

  7. drf(路由)

    一 自动生成路由 基本使用 # 视图类,继承了ViewSetMixein,路由 # path('books/', views.BookViewSet.as_view(actions={'get': ' ...

  8. 使用Java给图片添加水印

    什么是水印呢?比如使用手机拍摄一张照片的时候,照片右下角的位置显示得有日期和时间信息,那就表示一个水印. 项目开发中给图片添加水印的操作很常见,比如给图片添加日期和时间,给图片添加公司的logo之类的 ...

  9. flume采集nginx日志文件数据到Kafka

    flume官网地址http://flume.apache.org/ #下载 wget https://mirrors.bfsu.edu.cn/apache/flume/1.9.0/apache-flu ...

  10. [Vue warn]: Unknown custom element: <el-row> - did you register the component correctly? For recursi

    babel.config.js 文件中 module.exports = { presets: [ '@vue/cli-plugin-babel/preset' ] } 替换为 module.expo ...