博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lagou数据爬取
阅读量:5089 次
发布时间:2019-06-13

本文共 2797 字,大约阅读时间需要 9 分钟。

1. 使用的工具

selenium+xpath+ 手动输入登录

2. 实现的功能:

   1.手动登录后,按终端提示,就能下载所需要的内容

 

import requestsimport jsonimport timeimport randomfrom lxml import etreefrom concurrent.futures import ThreadPoolExecutorfrom selenium import webdriverimport pymongo# 连接mongo 数据库client = pymongo.MongoClient()db = client.lougoucollention =db.lou# 进入拉钩首页url ='https://www.lagou.com/'bro = webdriver.Chrome()bro.get(url)input('在登录页面手动登录后,按回车键:')# 进入了自己登录页面#  找到收缩框search_input = bro.find_element_by_id('search_input')# 找到搜索按钮search_button = bro.find_element_by_id('search_button')# 输入你需要搜索的职位search_msg = input('请输入你要搜索的职位:')# 在输入框自动填入搜索内容search_input.send_keys(search_msg)# 自动点击搜索按钮search_button.click()def get_data():    '''    提取页面数据    将数据存入 mongo 数据库    '''    time.sleep(1)    # 获取页面内容    page=bro.page_source    time.sleep(2)    tree = etree.HTML(page)    li_list =tree.xpath("//ul[@class='item_con_list']/li")    for li in li_list:        item={}        item['title'] =li.xpath('.//h3/text()')[0]  # 职位标题        item['position_link'] = li.xpath(".//a[@class='position_link']/@href")[0] # 职位详情链接        item['addr'] = li.xpath(".//span[@class='add']/em/text()")[0].strip()  # 公司区域        item['money'] = li.xpath(".//div[@class='li_b_l']/span/text()")[0]  # 岗位工资        item['work_year'] = li.xpath(".//div[@class='p_bot']/div[@class='li_b_l']//text()") #        item['work_year'] = [i.strip() for i in item['work_year'] if i.strip()]        item['work_year'] =item['work_year'][1]  # 工作经历        item['company_name'] = li.xpath(".//div[@class='company_name']/a/text()")[0]  # 公司名字        item['industry'] = li.xpath(".//div[@class='industry']/text()")[0].strip()  # 公司所属行业        print(item)        # 将数据存到MongoDB 中        collention.insert(item)get_data()# 翻页下载该搜索也的所有页的数据while 1:    try:        # 下一页        next =bro.find_element_by_xpath('//span[@class="pager_next "]')        next.click()        get_data()    except :        print('没有下一页了。。。。。')        break# 进入循环 ,实现 用户再次 输入 不同职位进行下载该类职位的信息  ,用户可以按 q 或 Q 退出下载while 1:    keyword_input = bro.find_element_by_id('keyword') # 搜索框    submit_btn = bro.find_element_by_id('submit') # 搜索按钮    # 清空输入搜索框的内容    keyword_input.clear()    # 重新进行搜索    msg2 =input('请输入你要下载的职位信息:')    # 退出循环条件,退出下载    if msg2.upper()=='Q':        break    keyword_input.send_keys(msg2)    # 点击搜索    submit_btn.click()        # 下载该页面的数据    get_data()    while 1:        try:            # 下一页            next =bro.find_element_by_xpath('//span[@class="pager_next "]')            next.click()                        # 进入下一页,进行下载该页的数据            get_data()        except :            print('没有下一页了。。。。。')            break# 关闭数据库client.close()# 关闭浏览器bro.quit()
代码

   2. 你第一次输入的职位下载完会提醒你,你可以再次下载你所需要的其他职位的数据

 3. 数据保存在了 mongo中,此处没有做扩展,存文件或其他数据库

 

转载于:https://www.cnblogs.com/knighterrant/p/10800208.html

你可能感兴趣的文章