信息提取说明:
1、将驱动放在python.exe同级目录下,模拟浏览器时不需要写驱动地址
2、查找搜索框元素,向其中传入keys
3、查找搜索按钮,用click方法模拟点击
4、sleep 8秒,确保异步加载的信息加载完毕
5、获取异步加载信息,page_source为str类型数据
6、模拟鼠标滚轮向下动作
7、brosver搜索加载更多按钮,并模拟点击
8、先循环加载更多,再统一寻找元素,统一提取信息,避免重复提取
信息插入说明:
一、使用Navicat for MySQL创建数据库:
1、管理员身份运行cmd,执行打开MySQL命令
2、使用Navicat for MySQL连接MySQL,并新建数据库(右击连接实例名,左击新建数据库,库名:ttAndtt)
3、cmd进入MySQL查看是否已建立(进入:mysql -u root -p输入密码:******(自行补充)显示已有数据库(注意结尾分号):show databases;)
二、使用python创建数据库并导入数据:
4、创建数据库
5、python连接数据库
6、获取游标
7、创建表varchar(40) 可变长度字符串类型,一个汉字算两个字符注意区分sql语句中的    `   和单引号   '
8、插入多条数据通过格式化字符串传入值,对应一个存有60个元组数据的列表
9、关闭游标
10、提交事务
11、断开数据库连接
import re
from selenium import webdriver
import time
import pymysql# 定义使用re提取信息函数(页面源码,空列表)
def getliInfo(html,appendList):for i in range(60):infoDict = {}infoDict['company'] = re.findall('class="item-title">(.*?)</h2>',html,re.S)[i]jobNameandAddress = re.findall('class="item-pos">(.*?)</span>',html,re.S)[i].strip()infoDict['jobName'] = re.findall(r'(.*?)[[]',jobNameandAddress,re.S)[0].strip()infoDict['address'] = re.findall(r'[[](.*?)[]]',jobNameandAddress,re.S)[0].strip()# 时间如果是今天发布的,页面会直接显示今天某某时间而不是某个日期格式infoDict['time'] = re.findall('class="item-time">(.*?)</p>',html,re.S)[i].replace('今天',time.strftime('%Y-%m-%d'))infoDict['salary'] = re.findall('class="item-salary">(.*?)</span>',html,re.S)[i]appendList.append(infoDict)def write(infoList):with open("laGoujob.txt", "w", encoding="utf-8") as f:for i in infoList:f.write(str(i))f.write("\n")# 定义一个将字典类型数据转换为元组类型数据的函数,方便将数据插入数据库
def dict_tup(infoList):Data = []for i in infoList:company = i['company']jobName = i['jobName']address = i['address']time = i['time']salary = i['salary']tup = (company,jobName,address,time,salary)Data.append(tup)print("60条信息转换成功")return Data# 定义向数据库插入数据的函数 (主函数中的insertDatabaseList列表)
def insertInfo(info):
# 密码自行补充pyConmysql = pymysql.Connect('localhost', user='root', password='******', db='ttAndtt')# print(pyConmysql)返回的是数据库连接实例# 选择连接的数据库pyConmysql.select_db('ttAndtt')# 获取游标cursor = pyConmysql.cursor()# 创建pythonBD数据库# 已手动创建,不用执行# cursor.execute('create database if not exists ttAndtt default charset utf8 collate utf8_general_ci;')sql = """create table if not exists `lagoujob`(`company` varchar(200) not null ,`jobName` varchar(200) not null ,`address` varchar(200) not null ,`time` varchar(200) not null ,`salary` varchar(200) not null )ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=0"""cursor.execute(sql)sqlInsert = "insert into lagoujob values (%s,%s,%s,%s,%s)"insert = cursor.executemany(sqlInsert, info)print("受影响的行数为:", insert)cursor.close()# 注意注意注意 一定要执行这一句来提交事务,否则不能真正插入数据pyConmysql.commit()#断开连接pyConmysql.close()print("插入成功!")def main():infoList = []# 模拟浏览器brosver = webdriver.Chrome()brosver.get('https://m.lagou.com/search.html')# 搜索classname为inputer的Element对象searchBox = brosver.find_element_by_class_name("inputer")# 查找搜索按钮button = brosver.find_element_by_class_name("search")# 向搜索文本框送入关键字searchBox.send_keys("数据分析")# 点击搜索按钮button.click()time.sleep(4)# 模拟鼠标滚轮动作,到页面底部,循环四次(每次加载15条,目标60条)for i in range(4):brosver.execute_script("window.scrollTo(0,document.body.scrollHeight);")# 查找加载更多按钮loadMore = brosver.find_element_by_class_name("list-more")loadMore.click()time.sleep(1.5)time.sleep(2)# 获取异步加载后的页面源码html_str = brosver.page_sourcegetliInfo(html_str, infoList)write(infoList)# 向数据库插入数据# 调用字典转元组函数,将待插入数据准备好,insertDatabaseList接收返回的数据列表insertDatabaseList = dict_tup(infoList)insertInfo(insertDatabaseList)main()

爬取拉钩网60条招聘信息并存入数据库相关推荐

  1. python3爬取58同城一页招聘信息并存入数据库,虽然有一些扒不下来,希望有大神指点

    直接上代码 import requests from bs4 import BeautifulSoup import time import pymysql#得到每个的详细信息 def get_inf ...

  2. java爬取酷狗榜单歌曲信息并存入数据库

    这里只解析一下代码,所需工具jsoup.HttpClient httpCLient获取html后,用jsoup解析html,再用java来获取所需要的信息. 之前写的有点问题,今天改了一下.因为通过h ...

  3. 爬取智联招聘信息并且存入数据库

    任务爬取智联页面的招聘信息并且存入数据库. 由于是初次尝试 这里选择了固定的页面存入数据库. 首先确定需要爬取的页面 http://sou.zhaopin.com/jobs/searchresult. ...

  4. python爬取拉勾网_python爬虫—爬取拉钩网

    本人自学python,小试牛刀,爬取广州片区拉钩网招聘信息.仅用于学习 参考文章:https://blog.csdn.net/SvJr6gGCzUJ96OyUo/article/details/805 ...

  5. python爬虫—爬取拉钩网

    本人自学python,小试牛刀,爬取广州片区拉钩网招聘信息.仅用于学习 参考文章:https://blog.csdn.net/SvJr6gGCzUJ96OyUo/article/details/805 ...

  6. python 爬取拉钩网数据

    python 爬取拉钩网数据 完整代码下载:https://github.com/tanjunchen/SpiderProject/blob/master/lagou/LaGouSpider.py # ...

  7. python爬取boss直聘招聘信息_年底啦,利用Python爬取Boss直聘的招聘信息,为明年跳槽做准备...

    原标题:年底啦,利用Python爬取Boss直聘的招聘信息,为明年跳槽做准备 前言 为什么都说程序员的薪资高,但是刚开始入职的你,薪资并不是自己想象中的那样,首先是你的工作经验不足,其次就是需要不断的 ...

  8. Python笔记-爬取Boss直聘的招聘信息

    Python笔记-爬取Boss直聘的招聘信息 最近迷上了爬虫,爬取招聘信息,存在MongoDB上 代码思路和上一篇爬取酷狗TOP500差不多,但是在使用CSS选择器的时候,有两组信息是连在一起,所以使 ...

  9. 【爬虫基础】爬取学校官网分页招聘信息

    **爬取某学校就业网站招聘信息** 用到的包 from urllib.request import urlopen import requests import json 一.获取不同页面的url 在 ...

最新文章

  1. vfp中,函数subs(计算机管理信息系统,7)返回的结果是,VFP选择题库(可发学生).xls...
  2. C++ Char int string关系
  3. 推荐6个绝赞良心工具,总有一些适合你!
  4. 第六回严重鄙视360安全卫士
  5. UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
  6. 【图像超分辨率】RRSGAN: Reference-Based Super-Resolution for Remote Sensing Image
  7. java thread 多线程_java用Thread方式创建多线程
  8. 美国称微软在华雇佣数百童工 中方调查否认
  9. 内存泄漏分析小工具分享(基于UMDH)
  10. C C++回调函数和java的回调函数
  11. 数据集:各地区化妆品销量、人口数量和人均收入
  12. 「数据集」一文道尽人脸数据集
  13. 用线性代数解释图论中的一些结论
  14. 对物联网的感悟_物联网学习心得
  15. 苦橙花---不喧哗,自有声
  16. Python图像处理库PIL的基本概念介绍
  17. 输入法android2.0,搜狗手机输入法forAndroid2.0版七大革命性升级
  18. 淘宝API接口(item_history_price-获取商品历史价格信息)
  19. redmine backlogs的tracker使用
  20. 1.488Mpps是如何计算出来的?

热门文章

  1. 人防工程防排烟及通风空气调节规范
  2. 暑假D16 T3 密道(数位DP? 打表找规律)
  3. VB编程:UCase转大写,LCase转小写-4
  4. java 实现回收站功能,回收站功能在 Linux 中的实现
  5. 换皮后贴吧玩家反馈整理
  6. EndNote修改导入文献格式的方法
  7. 作为一名Java开发工程师需要掌握哪些专业技能
  8. python标准数据类型叮叮叮
  9. 博士最惨能惨到什么程度?
  10. Jmeter 测试12306 获取火车票订单接口