当前位置:   article > 正文

人工智能就业怎么样?我用Python爬取关于人工智能的工作信息_爬取人工智能应用开发相应岗位的招聘信息

爬取人工智能应用开发相应岗位的招聘信息

微信公众号:DeepThinkerr
B站:DeepThinkerr

在微信公众号回复 “51job数据爬取” 获取Python代码源文件和数据结果
(本博客在《利用 Python 爬取了 13966 条运维招聘信息,我得出了哪些结论》启发下创作,目前只爬取了数据,没有进行数据清洗。

一、URL分析

51job搜索人工智能的网站:https://search.51job.com/list/000000,000000,7300,00,9,99,%2520,2,1.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare=

  这URL看上去是不是吓死人,其中这里边大部分都是废话真正有用的部分很短,先上第一页和第二页的URL,对比分析。
在这里插入图片描述
  了解URL的可以知道,第一页和第二页的URL的页面参数参数分别为1和2,在看整个URL过程中,注意出现1和2的位置。一边URL的页面参数会在后边列出关键词(例如:p=1 or page=1),但是这个URL比特殊,页面参数在前边,如下图所示。
在这里插入图片描述
  可以看到,两个URL在红色方框里边分别对应1和2,可能是页面参数。对不对试试就知道了,将参数改为3,再输入浏览器。
在这里插入图片描述
  这个时候就到了第三页,这个时候就找到了URL的页面参数,但是这个URL看上去太长了,尝试将html?后边去掉,在看浏览器页面。惊奇的发现两者是一样的,这样将后边的吊车尾去掉,看上去就舒服多了,最后在Python中URL为:

“ https://search.51job.com/list/000000,000000,7300,00,9,99,%2B,2,” + 页面 + “.html?”

二、HTML界面分析

  页面分析完了,就需要分析页面的HTML代码了,首先利用Ctrl+F找到需要爬取的信息位置(例如 搜索“ 长沙海贝智能科技有限公司”)。这样就找到需要解析的页面位置,如下图。
在这里插入图片描述
  观察两个工作的结构,可以发现每一个工作的信息都放在 “

”的“
”内部,如下图所示。
在这里插入图片描述

三、爬虫代码

3.1 使用Python库

NameVersion
requests2.24.0
beautifulsoup44.9.1
pandas1.0.5
lxml4.5.2

3.2 Python爬虫代码

3.2.1 构建URL信息
url_pre = 'https://search.51job.com/list/000000,000000,7300,00,9,99,%2520,2,'
url_end = '.html?'
user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 Edg/84.0.522.40'
headers = {'User-Agent' : user_agent}
  • 1
  • 2
  • 3
  • 4
3.2.2 爬取主网页数据
for i in range(1,200) :
    url = url_pre + str(i) + url_end
    response = requests.get(url, headers=headers)
    response.encoding = 'gbk'  # setting encoding
    
    html = etree.HTML(response.text)
    
    # crawling the information of [job_name, company_name, address, salary, date] and deep_url
    job_name = html.xpath('//div[@class="dw_table"]/div[@class="el"]/p/span/a/@title')
    deep_url = html.xpath('//div[@class="dw_table"]/div[@class="el"]/p/span/a/@href')
    company_name = html.xpath('//div[@class="dw_table"]/div[@class="el"]/span[@class="t2"]/a/@title')
    address = html.xpath('//div[@class="dw_table"]/div[@class="el"]/span[@class="t3"]/text()')
    salary_mid = html.xpath('//div[@class="dw_table"]/div[@class="el"]/span[@class="t4"]')
    salary = [i.text for i in salary_mid]  # salary is None
    date = html.xpath('//div[@class="dw_table"]/div[@class="el"]/span[@class="t5"]/text()')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
3.2.3 爬取二级网页数据
# get information of deep_url
Position_Info = []
Functional_Categoriess = []
KeyWords = []
Contact_Info = []
Company_Type = []
Company_People = []
Industy = []
for deep in deep_url :
    # get the response of deep_url
    deep_response = requests.get(deep, headers=headers)
    deep_response.encoding = 'gbk'
        
   	# translate the str to Tag
   	deep_html = etree.HTML(deep_response.text)
        
	# crawling the information of [company_type, company_people, industy,
	#                               position_info, functional_categories, keyword, contact_info]
	position_info = deep_html.xpath('//div[@class="tCompany_main"]//div[@class="bmsg job_msg inbox"]/p/text()')
	functional_categories = deep_html.xpath('//div[@class="tCompany_main"]//div[@class="bmsg job_msg inbox"]/div[@class="mt10"]/p[1]/a/text()')
	keywords = deep_html.xpath('//div[@class="tCompany_main"]//div[@class="bmsg job_msg inbox"]/div[@class="mt10"]/p[2]/a/text()')
	contact_info = deep_html.xpath('//div[@class="tCompany_main"]//div[@class="bmsg inbox"]/p/text()')
        
	company_type = deep_html.xpath('//div[@class="tCompany_sidebar"]//div[@class="com_tag"]/p[1]/text()')
	company_people = deep_html.xpath('//div[@class="tCompany_sidebar"]//div[@class="com_tag"]/p[2]/text()')
	industy = deep_html.xpath('//div[@class="tCompany_sidebar"]//div[@class="com_tag"]/p[3]/@title')
        
	Position_Info.append(position_info)
	Functional_Categoriess.append(functional_categories)
	KeyWords.append(keywords)
	Contact_Info.append(contact_info)
	Company_Type.append(company_type)
	Company_People.append(company_people)
	Industy.append(industy)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
3.2.4 数据存储
df = pd.DataFrame()
df["岗位名称"] = job_name
df["公司名称"] = company_name
df["工作地点"] = address
df["工资"] = salary
df["职位信息"] = Position_Info
df["职能类别"] = Functional_Categoriess
df["关键词"] = KeyWords
df["公司类型"] = Company_Type
df["公司规模"] = Company_People
df["所属行业"] = Industy
df.to_csv('数据.csv', mode='a+', index=None, header=None, encoding='gbk')
time.sleep(2)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

四、参考

  1. 《Python3网络爬虫开发实战》——催庆才
  2. 利用 Python 爬取了 13966 条运维招聘信息,我得出了哪些结论
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/155424
推荐阅读
相关标签
  

闽ICP备14008679号