jquery抓取网页内容(一个简单的招聘网站数据归档进行当前热门岗位大数据分析)
优采云 发布时间: 2022-01-03 23:05jquery抓取网页内容(一个简单的招聘网站数据归档进行当前热门岗位大数据分析)
》所有未经项目验证的代码都是流氓,今天我们将通过一个简单的招聘网站数据存档对当前热门职位进行大数据分析,最后在wordcloud中展示。本文是一个数据爬取的文章。”
项目准备:
这一次,让我们更完整的捕捉拉勾在线“Python”相关的招聘信息和招聘要求。
可以连接互联网并搭建Python3以上环境的电脑。如果没有配置环境,可以参考我原来的文章 Python安装配置。 IDE这次我们用的是Jupyter Notebook,采集我们用的是selenium+pyquery,为什么要用这个呢?都是泪流满面,文末解释。数据分析使用熊猫。
分析页面找到数据源
打开 并搜索“Python”以获取以下页面。最近因为疫情被拘留在武汉,所以我会以武汉站作为我的目的地。共30页,每页显示15个位置[Position(368)].
selenium采集的效率远低于request采集。因为是在模拟浏览器模式下爬行,所以每次都要渲染页面。但是还有一个好处,就是不用担心header和cookie的问题。废话不多说,开始操作
按照我们之前的方法在 Notebook 中创建一个新的 Python 3 文件:
介绍各种模块:
import pyquery as pq
from selenium import webdriver
import pandas as pd
import time
import os
初始化浏览器:
driver = webdriver.Firefox()
driver.implicitly_wait(5)
driver.get("https://www.lagou.com/")
在打开的页面中,处理拉勾网的登录状态
while True:
i = input("已登陆成功请输入“OK”:")
if i == 'OK':
break
elif i == 'quit':
print("取消执行,关闭!")
os._exit(1)
登录成功后,在命令行输入窗口输入“OK”进入下一步执行。
进入列表采集:
print("开始执行采集")
data = []
driver.get("https://www.lagou.com/jobs/list_Python/p-city_184?&cl=false&fromSearch=true&labelWords=&suginput=")
while True:
but_class = driver.find_element_by_css_selector(".pager_next").get_attribute('class')
if but_class == 'pager_next ':
driver.find_element_by_xpath("//span[@action='next']").click()
items = pq.PyQuery(driver.page_source).find(".con_list_item")
data += getPosition(items)
time.sleep(2)
else:
print('列表采集结束')
break
我们单独定义了一个采集方法,getPosition方法接收一个pyquery对象。
方法代码如下:
def getPosition(items):
datalist=[]
for item in items.items():
temp = dict()
temp['职位ID']= item.attr('data-positionid')
temp['职位名']= item.attr('data-positionname')
temp['薪资范围']= item.attr('data-salary')
temp['公司ID']= item.attr('data-companyid')
temp['公司名']= item.attr('data-company')
temp['职位链接']=pq.PyQuery(item).find(".position_link").attr("href")
temp['发布时间']=pq.PyQuery(item).find(".format-time").text()
temp['猎头名称']=pq.PyQuery(item).find(".hr_name").text()
temp['猎头ID']=pq.PyQuery(item).find(".target_hr").text()
temp['工作经验']=pq.PyQuery(item).find(".p_bot>.li_b_l").remove(".money").text()
temp['公司主页']=pq.PyQuery(item).find(".company_name>a").attr('href')
temp['公司描述']=pq.PyQuery(item).find(".industry").text()
temp['岗位亮点']=pq.PyQuery(item).find(".li_b_r").text()
datalist.append(temp)
return datalist
到此,主列表的采集和排序工作就结束了。我们将来自 采集 的数据整合到 Pandas 中,并将其保存到一个 csv 文件中以备后用。
csv = pd.DataFrame(data)
csv.to_csv("lagou.csv")
截图是保存的DataFrame。可以看到,我们已经保存了二级页面名称和公司相关信息。
一共368条数据是采集。这时候我们开始完善第二步的详细数据采集。
我们先查一个二级页面,看看数据格式