一、结果放在最前面
(请忽略截图右边的蓝色正方形)
使用爬虫爬取智联招聘上关于“数据分析师”岗位的信息,并应用flask和echarts技术实现数据分析结果。
二、爬虫
主函数(main):实现网页解析以及数据存储。
def main():
kw = input("请输入你要搜索的岗位关键字:").strip()
keyword = urllib.parse.quote(urllib.parse.quote(kw)) #二次编码
# ka = input("请输入你要搜索的地区:").strip()
# karea = getArea(ka)
for i in range(1, 165):
print('正在爬取第{}页信息'.format(i))
baseurl = "https://search.51job.com/list/"+ str(000000) +",000000,0000,00,9,99,"+ keyword +",2,"+ str(i) +".html" #全国+keyword
html = askURL(baseurl)
bs = BeautifulSoup(html,"html.parser")
datalist = getData(bs)
dbpath = "./51job.db"
saveDB(datalist, dbpath)
网页解析(askURL):调用request和BeautifulSoup实现网页解析。
def askURL(url):
head = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"
}
request = urllib.request.Request(url,headers=head)
html = ""
try:
response = urllib.request.urlopen(request)
html = response.read().decode('gbk', 'ignore')
# print(html)
except urllib.error.URLError as e:
if hasattr(e, "code"):
print(e.code)
if hasattr(e,"reason"):
print(e.reason)
return html
数据爬取(getData):获取招聘信息,公司链接、招聘岗位链接、公司名称、岗位名称、地区、薪水;调用getCOM获取公司链接内的信息,调用getREC获取招聘岗位信息,并合并返回给main()。
def getData(bs):
datalist = []
for item in bs.select(".dw_table > div.el"):
data = {
}
item = str(item)
link = re.findall(findLink, item)
data['l