python3 requests_html 爬取智联招聘数据(简易版)
PS重点:我回来了-----我回来了-----我回来了
1. 基础需要: python3 基础
html5 CS3 基础
2.库的选择: 原始库 urllib2 (这个库早些年的用过,后来淡忘了)
进阶库 requests + BeautifulSop
Xpth 方法 -库lxml
组合版: requests_html (requests 作者)
存储: csv
正则: re
PS:那个方便用那个。
|-1
PS: 智联的网页ip复制到本地text,中文会出现加密,其他网站我没试过,但是智联真是这样,切记,切记
另外就是下载的页面数据,都是通过js渲染的,如果不使用render 方法,有些数据读取不到。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
import requests_html import csv import re session = requests_html.HTMLSession() r = session.get('https://sou.zhaopin.com/?jl=530&kw=爬虫工程师&kt=3') r.html.render()
|-2
本来是要 使用 .html.find() 方法找标签,但是获取的数据只有一行,真的哔了狗,怀疑找的 html 标签不对,直接copy复制的层级,没问题。应该还是数据加载的问题
PS: 用正则去找的div 标签。
用 (\d)K-(\d)K 获取工资,它给我把0和k干掉了,神马情况。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
xinzi = '<p.* class="contentpile__content__wrapper__item__info__box__job__saray">(.*?)</p>' xinzi_title = re.findall(xinzi,r.html.html) gongsi = '<a.* target="_blank" class="contentpile__content__wrapper__item__info__box__cname__title company_title>(.*?)</>' gongsi_title = re.findall(gongsi,r.html.html)
|-3
重点来了,文件的获取之后在存储。真的要尝试后才发现自己的错误点,马克思告诉我们要实践检验,是没错的。
获取之后的数据,存在列表里面,存在csv里面,发现就一行,就用了for 循环,遍历存储,但是发现存储的值还是间隔一行。目前没有什么好的思路,再找找原因。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
wiht open('xinzi.csv','w+',) as files: csvwrite = csv.write(files) csvwrite.writeorw(['公司',薪资'']) #xinzi_title1 = r.html.find(xinzi_title,first=True) #gongsi_title1 = r.html.find(gongsi_title,first=True) for i in range(len(xinzi_title)): csvwrite.writerow([xinzi_title[i],gongsi_title[i]])
完整:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#/usr/bin/python3 #conding:utf-8 #author:yan import requests_html import csv import re # 获取连接,进行网页下载,js渲染 session = requests_html.HTMLSession() r = session.get('https://sou.zhaopin.com/?jl=530&kw=爬虫工程师&kt=3') r.html.render() # xinzi = '<p.* class="contentpile__content__wrapper__item__info__box__job__saray">(.*?)</p>' xinzi_title = re.findall(xinzi,r.html.html) gongsi = '<a.* target="_blank" class="contentpile__content__wrapper__item__info__box__cname__title company_title">(.*?)</a>' gongsi_title = re.findall(gongsi,r.html.html) with open('xinzi1.csv','w+',) as filea: csvwrite = csv.writer(filea) csvwrite.writerow(['薪资','工资']) #xinzi_title1 = r.html.find(xinzi_title,first=True) #gongsi_title1 = r.html.find(gongsi_title,first=True) for i in range(len(xinzi_title)): csvwrite.writerow([xinzi_title[i],gongsi_title[i]])
PS:加油,
最近是心态炸裂,颓废了两年,
耗费大半个时间,真的是放纵自己。
该活过来了,生命走了三分之一的路程,浪费了多少。