python3爬取58同城一页招聘信息并存入数据库,虽然有一些扒不下来,希望有大神指点
直接上代码
import requests
from bs4 import BeautifulSoup
import time
import pymysql#得到每个的详细信息
def get_info(URL):headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0' }try:wb_data = requests.get(URL,headers=headers)#获取整个页面soup = BeautifulSoup(wb_data.content, 'html.parser')#名称NameList = soup.select('div.pos_base_info > span.pos_title')name = NameList[0].text.strip()#第二名称LastList = soup.select('span.pos_name')last = LastList[0].text.strip()#行业HyList = soup.select('p.comp_baseInfo_belong > a')hy = HyList[0].text.strip()#公司GsList = soup.select('div.baseInfo_link > a')gs = GsList[0].text.strip()#标签BqList = soup.select('div.pos_welfare > span.pos_welfare_item')bq = BqList[0].text.strip()+'|'+BqList[1].text.strip()+'|'+BqList[2].text.strip()+'|'+BqList[3].text.strip()+'|'+BqList[4].text.strip()+'|'+BqList[5].text.strip()#bq = oldBq.str.replace("-", "|")#要求YqList = soup.select('div.pos_base_condition > span.item_condition')yq = YqList[0].text.strip()+'|'+YqList[1].text.strip()+'|'+YqList[2].text.strip()#价格JgList = soup.select('span.pos_salary')jg = JgList[0].text.strip()#地址AddressList = soup.select('div.pos-area > span')address = AddressList[0].text.strip()+'-'+AddressList[1].text.strip()#描述MsNameList = soup.select('div.des')ms = MsNameList[0].text#介绍JsList = soup.select('div.shiji > p')js = JsList[0].textjob_all = [name,last,hy,gs,bq,yq,jg,address,ms,js]print('数据获取成功!')#返回爬取的数据return job_allexcept:print('爬取错误') #不想看到这句话,可以写pass#创建数据库
def database_found():# 打开数据库连接,不需要指定数据库,因为需要创建数据库conn = pymysql.connect(host='localhost', user="root", passwd="root")# 获取游标cursor = conn.cursor()# 创建pythonBD数据库cursor.execute('CREATE DATABASE IF NOT EXISTS 58_job DEFAULT CHARSET utf8;')conn.select_db('58_job')cursor = conn.cursor()# `id` int(11) NOT NULL AUTO_INCREMENT,sql = """CREATE TABLE IF NOT EXISTS `job` (`name` varchar(255),`last` varchar(255),`hy` varchar(255),`gs` varchar(255),`bq` varchar(255),`yq` varchar(255),`jg` varchar(255),`address` varchar(255),`ms` varchar(1000),`js` varchar(1000)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0"""cursor.execute(sql)cursor.close() # 先关闭游标conn.close() # 再关闭数据库连接#向数据库插入数据
def save_page_data(data: list):conn = pymysql.connect(host='localhost',user='root',password='root')conn.select_db('58_job')cur = conn.cursor()sql_str = f'insert into job values ("'+data[0]+'","'+data[1]+'","'+data[2]+'","'+data[3]+'","'+data[4]+'","'+data[5]+'","'+data[6]+'","'+data[7]+'","'+data[8]+'","'+data[9]+'");'if cur.execute(sql_str) == 0:print('写入错误!')else:print('写入数据成功!')cur.close()conn.commit()conn.close()'''
下面是得到一个列表页的所有链接,然后单个请求页面并获取数据
'''
def get_all_info():#地区 郑州"0d30364d-0015-60bd-6f5c-6b4f6a48df00"addr_code = '0d30364d-0015-60bd-6f5c-6b4f6a48df00'#页数page_num = '1'#开始计时start_time = time.time()res = []#初始urlurl = f'https://zz.58.com/yewu/pn{page_num}/?PGTID={addr_code}&ClickID=3'headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0' }try:wb_data = requests.get(url,headers=headers)soup = BeautifulSoup(wb_data.text, 'html.parser')GetLink = soup.select('div.job_name > a')except:print('列表页信息被修改,所以爬取错误')for i in GetLink:#得到href链接link = i.get('href')#选择url带有“业务”拼音“yewu”的链接,有便执行get_info()if 'yewu' in link:#间歇一秒#time.sleep(1)#添加到resres.append(get_info(link))#排除list中的None,因为有些信息爬取失败new_res = []for i in res:if i is not None:new_res.append(i)#创建数据库database_found()all_num = len(new_res)while new_res:print(len(new_res))save_page_data(new_res.pop())print(f'成功爬取{all_num}条数据,共耗时{time.time() - start_time}s') get_all_info()
python3爬取58同城一页招聘信息并存入数据库,虽然有一些扒不下来,希望有大神指点相关推荐
- 爬取拉钩网60条招聘信息并存入数据库
信息提取说明: 1.将驱动放在python.exe同级目录下,模拟浏览器时不需要写驱动地址 2.查找搜索框元素,向其中传入keys 3.查找搜索按钮,用click方法模拟点击 4.sleep 8秒,确 ...
- java爬取酷狗榜单歌曲信息并存入数据库
这里只解析一下代码,所需工具jsoup.HttpClient httpCLient获取html后,用jsoup解析html,再用java来获取所需要的信息. 之前写的有点问题,今天改了一下.因为通过h ...
- 使用Scrapy框架爬取58同城的出租房信息
from scrapy.exceptions import DropItem from pymongo import MongoClient from scrapy.conf import setti ...
- 爬取智联招聘信息并且存入数据库
任务爬取智联页面的招聘信息并且存入数据库. 由于是初次尝试 这里选择了固定的页面存入数据库. 首先确定需要爬取的页面 http://sou.zhaopin.com/jobs/searchresult. ...
- python爬取58同城的兼职信息
标题python爬取58同城的兼职信息 刚刚开始学习爬虫,一些 自己研究的小东西,爬取58同城上面的兼职信息放入Excel表格里,具体代码解释在代码里给出注释,下面给出完整代码: #首先是导包 imp ...
- python爬取58同城房子发布的手机号码_爬虫(成都58同城所有房价,Python实现)
Python实现爬虫(爬取58同城所有房价) 程序发布日期2018-9-25(如果以后不能使用了,就需要更改解析方式.) github博客传送门 csdn博客传送门 爬虫文件(Python实现)-爬取 ...
- python爬取大众点评_浅谈python爬取58同城,大众点评这两个网站
1.爬取58同城租房网遇到的坑:我爬了一页数据被封了ip,此时的我是非常的不爽,才十几条数据就封我,于是我就想着一定得找ip代理来解决这个问题,后面就写了个ip代理去弄,另外把之前头部信息ua改成了u ...
- python实战|python爬取58同城租房数据并以Excel文件格式保存到本地
python实战|python爬取58同城租房数据并以Excel文件格式保存到本地 一.分析目标网站url 目标网站:https://cq.58.com/minsuduanzu/ 让我们看看网站长啥样 ...
- python:爬取58同城全部二手商品信息(转转网)
python_58ershou python+beautifulsoup多线程爬取58同城二手全部商品信息,并在jupyter上将数据可视化 项目主程序在58_index中: 建立mango数据库表 ...
最新文章
- R语言glm拟合logistic回归模型:模型评估(模型预测概率的分组密度图、混淆矩阵、准确率、精确度、召回率、ROC、AUC)、PRTPlot函数获取logistic模型最优阈值(改变阈值以优化)
- MyBatisPlus条件构造器中last方法怎样使用
- @Cacheable原理
- 我们离DevOps有多远--持续集成思想的延伸
- c语言开发 .c .h,求助C语言大佬 , 只会写到一个.c文件里 ,不会用.h头文件
- laradock双版本php,自己撸一个 LaraDock(使用 Docker LNMP 部署 PHP 开发环境)
- 代码创建数据库_表--SqlServer数据库
- mysql知识点拾遗梳理
- 阿里云平台购买域名 备案步骤
- 新媒传信Java_新媒小课堂——多媒体、流媒体、富媒体
- 解决联想小新air13pro笔记本电脑插入耳机没声音的问题
- std::cunction() 简单描述
- c语言扇形打印图片,圆形CD绘制 (扇形)
- Linux下Graphite的安装及部署
- 什么是RAM?如何清理电脑RAM?
- 自定义SpringBoot程序启动图标
- Vue进阶(幺玖叁):$OPTIONS 讲解
- linux里 read函数用法
- Win7 BitLocker加密须了解的五件事
- 递归 谢尔宾斯基三角形