python爬虫-爬取boss直聘的职位信息
程序员文章站
2022-04-26 09:59:54
...
爬取boss直聘的相应的职位信息:
一个同学今天想找工作,问我有什么好单位,关键我也不清楚,于是我去各大招聘网站搜索了下,有很多招聘信息,看的我眼花缭乱,刚看完的职位,忘记收藏又过去搜索,感觉太麻烦,于是就想着把内容爬取下来,慢慢看,慢慢分析,先从boss直聘开始爬取。
具体代码如下
import requests
from lxml import etree
import urllib3
urllib3.disable_warnings()
import time
# proxy = {
# 'http':'123.54.47.203:9999',
# }
# 获取第一个url
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36'
}
def get_details_url(base_url,location='hangzhou',engineer='自动化测试',page=1):
locations = {'xian':'c101110100','hangzhou':'c101210100'}
url = base_url + '/' + locations[location] + '/'
print(url)
# 发送请求获取页面源码
# params = 'query={}&page={}&ka=page-{}'.format(engineer,page,page) 这种方式好像不行,不知道为什么
params = {'query':engineer,
'page':page,
'ka':'page'+'-'+ str(page)}
res = requests.get(url=url,headers=headers,params=params,verify=False)
# print(res.content.decode("utf-8"))
result = res.content.decode("utf-8")
# 解析页面内容为html文档树结构
html = etree.HTML(result)
lis = html.xpath('//div[@class="job-list"]/ul/li')
# print(lis)
# 获得返回的详情页面的url
detail_urls = []
for li in lis:
detail_url = li.xpath('.//div[@class="primary-box"]/@href')[0]
detail_url = base_url + detail_url
# print(detail_url)
detail_urls.append(detail_url)
return detail_urls
base_url = 'https://www.zhipin.com'
print(get_details_url(base_url))
details_url = get_details_url(base_url)
# 爬取详情页面的内容薪水和职位和公司
results = []
datas={}
for detail_url in details_url[:5]:
time.sleep(5)
res = requests.get(url=detail_url,headers=headers,verify=False)
# print(res.content.decode("utf-8"))
result = res.content.decode("utf-8")
# print(res.status_code)
html = etree.HTML(result)
divs = html.xpath("//div[@class='job-primary detail-box']//div[@class='info-primary']//div[@class='name']")
# print(divs)
eng = divs[0].xpath('./h1/text()')[0]
salary = divs[0].xpath('./span/text()')[0]
company_dec = html.xpath('//div[@class="job-box"]//div[@class="inner home-inner"]')[0]
company = company_dec.xpath('.//div[@class="job-sider"]//div[@class="company-info"]/a[1]/@title')[0]
office_decription = company_dec.xpath('.//div[@class="detail-content"]//div[@class="job-sec"]//div[@class="text"]/text()')[0]
datas['company'] = company
datas['office_decription'] = office_decription
datas['eng'] = eng
datas['salary'] = salary
for i,j in datas.items():
datas[i] = str(j).strip().strip('\\n')
# print(datas)
results.append(datas)
print(results)
本次爬取遇到的问题:
1.输出的网页源码信息看着不是我想要的?
解决方式:添加cookie信息(通过f12抓包获取,然后添加到请求头中),顺便说下什么是cookie,cookie是服务端为了识别用户的身份,在客户第一次访问服务器后,服务端在客户端本地存取的一些数据(也叫session跟踪,一般不大于4kb),用户访问其他链接时就会带上cookie信息
cookie的格式如下
2.为什么爬两次就又爬取不到了?
解决方式:这是因为网站设置了反爬虫机制,所以在爬取时,可以试试添加等待时间,以更大程度的模拟真实用户的场景
3.爬取的次数多了,可能被网站识别,有可能造成访问不了人家网址了,该如何解决?
解决方式:可以通过设置代理ip
推荐阅读
-
Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)
-
Python爬虫实例:爬取B站《工作细胞》短评——异步加载信息的爬取
-
Python+selenium爬取智联招聘的职位信息
-
python网络爬虫之解析网页的XPath(爬取Path职位信息)[三]
-
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
-
python爬虫_微信公众号推送信息爬取的实例
-
python3爬虫-通过selenium登陆拉钩,爬取职位信息
-
使用python爬虫实现网络股票信息爬取的demo
-
Python3爬虫学习之将爬取的信息保存到本地的方法详解
-
Python3爬虫学习之MySQL数据库存储爬取的信息详解