使用多线程爬取招聘网站

news/2024/5/16 17:30:29/文章来源:https://blog.csdn.net/weixin_34289454/article/details/89548118

使用多线程获取某招聘网站的信息,使用环境py3,话不多说直接上代码

该导的包你可就不能少了

import threading
import requests
from pyquery import PyQuery as pq
import json
from pymongo import MongoClient
from fake_useragent import UserAgent
import time
from config import *

我这里用到的是Mongodb储存的,fake_useragent是一个‘User-Agent’一个共享库,看着用,我这边写的是一个配置文件,大家可以看将**文件写自己的文件。

client = MongoClient(().mogodb()["IP"],().mogodb()["port"])
u = UserAgent()

class data():

def __init__(self,startpage,page,citynum,hangyenum):self.startpage=startpageself.page=pageself.citynum=citynumself.hangyenum=hangyenum
def datature(self):if self.startpage==0:self.startpage=1for i in range(self.startpage,self.page):try:headers = {'User-Agent': u.random,}yu = requests.get('这里是一个代理url').textip = yu.split(':')[0]port = yu.split(':')[1]proxy_http = "http://{0}:{1}".format(ip, port)proxy_dict = {"http": proxy_http}print(proxy_dict)url='https://fe-api.zhaopin.com/c/i/sou?start={0}&pageSize=60&cityId={1}&industry={2}&workExperience=-1&education=-1&companyType=-1&employmentType=-1&jobWelfareTag=-1&kt=3&_v=0.64455588&x-zp-page-request-id=2fb2f4e53284471aa21894bf291db027-1543801568582-396367'.format(str(i*60),self.citynum,self.hangyenum)print(self.startpage,self.page)r=requests.get(url,headers=headers,proxies=proxy_dict)dict1=json.loads(r.text)for j in dict1['data']['results']:href='https://jobs.zhaopin.com/'+j['number']+'.htm'href=j['positionURL']print(href)r1 = requests.get(href, headers=headers,proxies=proxy_dict)doc = pq(r1.text)title = doc('.new-info h1.l.info-h3').text()xinzhi = doc('.new-info div.l.info-money strong').text()company = doc('li.clearfix div.company.l a').text()jianjie = doc('li.clearfix div.info-three.l').text()zhiweixinxi = doc('div.l.pos-info-in div.pos-info-tit p.r ').text()zhiweimiaoshu = doc('div.responsibility.pos-common div.pos-ul').text()gongsigaikuang = doc('div.intro-content div[align="left"]').text()lianxifangshi = doc('div.intro-content div[style="font-family: 宋体;"]').text()list1=jianjie.split(' ')try:list2=zhiweixinxi.split(' ')[0]except:list2=''try:jianjie1=list1[0]jianjie2=list1[1]jianjie3=list1[2]jianjie4=list1[3]except:passif title!=""and len(list1)==4:db = client.自己的数据库名1# 创建数据库名post = {'title': title,'xinzhi': xinzhi,'conmpany': company,'dizhi': jianjie1,'jingyan':jianjie2,'xueli':jianjie3,'zhaopinrenshu':jianjie4,'zhiweixinxi': list2,'zhiweimiaoshu': zhiweimiaoshu,'gongsigaikuang': gongsigaikuang,'lianxifangshi': lianxifangshi,'html':href}posts = db.zhaopin  # 创建表名post_id = posts.insert_one(post).inserted_id  # 创建id将数据提交else:passprint(i)self.startpage+=1except:print("请求次数过多或程序出错错误页:",self.startpage)self.startpage += 1self.datature()

下面是使用多线程执行上面这段请求解析
def action(a,b,c,d):

start = data(int(a),int(b),c,d)
start.datature()

if __name__=="__main__":

while True:print('88888888此程序启动为默认程序8888888888')for i in range(26):citynum = zhilianzhaopin().sheng(i)["citynum"]for j in range(12):hangyenum = zhilianzhaopin().hangye(j)["hangyenum"]print('点击查看多少页,默认程序是101页:', end='')print('https://sou.zhaopin.com/?jl={0}&in={1}'.format(citynum, hangyenum))page = zhilianzhaopin().zongyeshu(101)[1]time.sleep(5)fenyepage = int(int(page) / 10)duandianpage = fenyepage * 10if fenyepage!=0:for i in range(11):if i <= 9:t = threading.Thread(target=action, args=(i * fenyepage, (i + 1) * fenyepage,citynum,hangyenum))else:t = threading.Thread(target=action, args=(duandianpage, page,citynum,hangyenum))t.start()elif fenyepage==0:action(1, page,citynum,hangyenum)

这下面是配置文件,可供参考:

class zhilianzhaopin():

def mogodb(self):a={}#mongodbIpIP=''#mongodb端口号port=a["IP"]=IPa["port"]=portif  a["IP"]!="" and a["port"]!="" :return aelse:print("配置文件mongodb参数缺失")
#省会名
def sheng(self,cityxuhao):list1={0: '北京', 1: '上海', 2: '深圳', 3: '广州', 4: '天津', 5: '成都', 6: '杭州', 7: '武汉', 8: '大连', 9: '长春', 10: '南京', 11: '济南',12: '青岛', 13: '苏州', 14: '沈阳', 15: '西安', 16: '郑州', 17: '长沙', 18: '重庆', 19: '哈尔滨', 20: '无锡', 21: '宁波', 22: '福州',23: '厦门', 24: '石家庄', 25: '合肥', 26: '惠州'}a='''0: '北京', 1: '上海', 2: '深圳', 3: '广州', 4: '天津', 5: '成都', 6: '杭州', 7: '武汉', 8: '大连', 9: '长春' '''b=''' 10: '南京', 11: '济南',12: '青岛', 13: '苏州', 14: '沈阳', 15: '西安', 16: '郑州', 17: '长沙', 18: '重庆', '''c='''19: '哈尔滨', 20: '无锡', 21: '宁波', 22: '福州',23: '厦门', 24: '石家庄', 25: '合肥', 26: '惠州' '''# print('%s\n%s\n%s'%(a,b,c))# try:#     cityxuhao=int(input('输入序号,整数:'))# except:#     print('输入错误!!!')#     self.sheng()#城市名city=list1[cityxuhao]print(city)#城市编码dict1={}citynum={'北京':'530','上海':'538','深圳':'765','广州':'763','天津':'537','成都':'801','杭州':'653','武汉':'736','大连':'600','长春':'631','南京':'635','济南':'702','青岛':'703','苏州':'639','沈阳':'599','西安':'854','郑州':'719','长沙':'749','重庆':'551','哈尔滨':'622','无锡':'636','宁波':'654','福州':'681','厦门':'682','石家庄':'515','合肥':'664','惠州':'773'}dict1['citynum']=citynum[city]if dict1['citynum']!="":return dict1else:print("配置文件省会名参数出错")#行业
def hangye(self,hangyexuhao):#参考行业list1={0: '互联网/IT', 1: '金融', 2: '房地产/建筑', 3: '商业服务', 4: '贸易/批发/零售', 5: '教育/艺术', 6: '服务业', 7: '文化/传媒/娱乐', 8: '制造业', 9: '物流运输', 10: '能源/环保', 11: '政府/非盈利', 12: '农林牧渔'}a=''' 0: '互联网/IT', 1: '金融', 2: '房地产/建筑', 3: '商业服务', 4: '贸易/批发/零售', 5: '教育/艺术', 6: '服务业', 7: '文化/传媒/娱乐', 8: '制造业', 9: '物流运输' '''b=''' 10: '能源/环保', 11: '政府/非盈利', 12: '农林牧渔' '''# print('%s\n%s'%(a,b))# hanyexuhao=hanyexuhao# try:#     hangyexuhao=int(input('输入对应序号:'))# except:#     print("输入错误!!!")#     self.hangye()dict1={}hangye = list1[hangyexuhao]print(hangye)# 行业编码hangyenum = {"互联网/IT": "10100", "金融": "10200", "房地产/建筑": "10800", "商业服务": "10900", "贸易/批发/零售": "10300","教育/艺术": "10400", "服务业": "10000", "文化/传媒/娱乐": "11300", "制造业": "10500", "物流运输": "11500","能源/环保": "11600", "政府/非盈利": "11100", "农林牧渔": "11400"}dict1["hangyenum"] = hangyenum[hangye]if dict1["hangyenum"]!="":return dict1else:print("配置文件行业中参数缺失")#总页数
def zongyeshu(self,page):startpage=1try:# page=int(input('输入总页数:'))page=int(page)except:print('输入有误!!!')self.zongyeshu()if page!="":return startpage,pageelse:print("配置文件总页数缺失")

有啥可以帮助的可以联系1307761253

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_758204.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

好域名怎么选?总结15名网站大佬给我的8条建议!(精华)

写网站上线的文章中提到需要有域名&#xff0c;本来是想在百度里搜一篇“选域名方面”的文章链接过去就好&#xff0c;但是看了好几篇&#xff0c;讲的都太笼统了&#xff0c;看完不知所云&#xff0c;一看就是“互相借鉴”的文章。所以我问了身边的几十位大佬&#xff0c;让他…

网站漏洞修复之苹果cms电影系统

2019独角兽企业重金招聘Python工程师标准>>> 苹果cms系统&#xff0c;是目前很多电影网站都在使用的一套网站系统&#xff0c;开源&#xff0c;免费&#xff0c;扩展性较好&#xff0c;支持一键采集&#xff0c;伪静态化&#xff0c;高并发的同时承载&#xff0c;获…

蜻蜓fm收音机电脑版_网页版全网音乐搜索解析下载网站,完全免费使用,支持网易酷狗酷我虾米百度一听咪咕荔枝蜻蜓 喜马拉雅全民K歌...

关注我们一起玩耍吧&#xff01;微信公众号&#xff1a;微友集市我们不生产资源我们做互联网搬运工这里是“微友集市”&#xff0c;我们坚持分享优质的资源&#xff0c;让更多人能用到更好的资源&#xff0c;少花冤枉钱。如果你有什么需要&#xff0c;可以给我们留言&#xff0…

8x8点阵字体在线生成器_字体字形网站合集

求字体&#xff0c;提供中文和英文字体库下载、识别与预览服务。传送门&#xff1a;http://www.qiuziti.com字体之家&#xff0c;提供各种字体打包下载&#xff0c;中文字体、英文字体、PS字体、艺术字体、手机软件、字体工具等。传送门&#xff1a;http://www.17ziti.com站长字…

.net mvc 获取iis基本登录网站登录账号_超赞!用Java实现了第三方qq账号登录...

传智汇传智播客旗下IT互联网精英社区作者&#xff1a;人间蒸发来源&#xff1a;zuidaima.com/blog/4725615031700480.htmQQ互联注册一个账号网站地址&#xff1a;https://connect.qq.com/&#xff0c;添加一个应用&#xff0c;具体怎么申请以及需要填写的信息&#xff0c;腾讯官…

eclipse tomcat新建一个_Eclipse搭建本地动态网站环境

准备Eclipse和Tomcat完成Web容器的配置在Eclipse中配置Tomcat (web容器)1、选择window->show view->other->servers 下面出现了servers点击 no servers are available click this link to create a new server -> 选择Tomcat7(下载的是7)->点击下一步->browe…

sqlite用户名密码_黑客利用工具轻易获取管理员账户密码,你的网站危险了

首先&#xff0c;先简单介绍下sqlmap简介&#xff1a;sqlmap是一种开源的工具&#xff0c;可以自动检测和利用SQL注入以及接入该库的服务器。它拥有非常强大的检测引擎、具有多种特性的器、通过库指纹提取访问底层文件系统并通过外带连接执行命令。支持的数据库&#xff1a;MyS…

服装设计网页制作_小众精选样机在线制作网站,大量免费的模型PSD分层

样机素材是设计行业的专用名词&#xff0c;又叫模板。是设计图案模拟到实物或场景展示的可重复套用模型。是将设计图案应用到一个实物效果图中进行展示&#xff0c;让设计图案看起来更加形象逼真。在国内也称样机素材为&#xff1a;标志模板、模拟机、贴图样机、智能贴图。用途…

kali如何制作php字典_sqlmap如何用dirsearch.py协助osshell拿到目标网站shell

本文首发于FreeBuf→https://www.freebuf.com/sectool/256588.html沙漏安全团队欢迎真正热爱技术的你&#xff01;SQLMAPsqlmap是一个开源渗透测试工具&#xff0c; 它可以自动检测和利用SQL注入漏洞并接管数据库服务器。它具有强大的检测引擎&#xff0c;同时有众多功能&#…

前端2个下拉框关联_前端SEO优化

前端SEO优化原文链接&#xff1a;https://juejin.im/post/6844903824428105735 作者&#xff1a;dhonor一、搜索引擎工作原理在搜索引擎网站的后台会有一个非常庞大的数据库&#xff0c;里面存储了海量的关键词&#xff0c;而每个关键词又对应着很多网址&#xff0c;这些网址是…

db2 删除索引_网站索引量直在下降是什么原因?

所谓网站索引量&#xff0c;就是指搜索弓|擎把你的网页内容索取到数据库中。简单理解就是网站中有多少页面可以作为搜索候选结果&#xff0c;就是网站的索引量。网站的索引量越高,说明参与排名的机会就越大。那么&#xff0c;在网站SEO优化过程中&#xff0c;索引量一直在下降&…

lnmp一键安装包 linux_搭建属于自己的个人网站(二):LNMP一键安装

接上一篇&#xff1a;搭建属于自己的个人网站(一)&#xff1a;域名注册解析及服务器配置本片介绍LNMP一键安装和wordpress安装以及wordpress后台管理模板上传&#xff0c;话不多说&#xff0c;直接上。1、LNMP一键安装(Linux NGINX MySQL PHP)打开Xshell工具&#xff0c;输入…

python编写程序的思路_神级程序员手把手教你写网站Python WEB开发!这个思路满分!...

本次的分享主要围绕以下几个方面&#xff1a; Python WEB开发技术简介 Django简介与环境配置与MVT设计模式简介 开发一个博客站点项目思路 路由编写与模型设计实战 快速开发一个网站后台与试图编写实战 模板设计与编写以及完善博客站点的其他功能Django是采用MVT的设计模式进行…

网站导航颜色停留_营销型网站建设的9步骤,你get了吗?

全网营销的信息时代&#xff0c;单纯的展示型网站仅适合那些不适合开展网络营销的行业&#xff0c;而这些行业也在不断寻找开拓网络营销渠道的办法&#xff0c;如建筑、工程等。在这个时代大背景下&#xff0c;企业营销型网站的比重就越来越大。但是很多企业对互联网的一些知识…

使用C#登录带验证码的网站

我在上一篇文章中已经讲解了一般网站的登录原来和C#的登录实现&#xff0c;很多人问到对于使用了验证码的网站该怎么办&#xff0c;这里我就讲讲验证码的原理和对应的登录方法。 验证码的由来 几年前&#xff0c;大部分网站、论坛之类的是没有验证码的&#xff0c;因为对于一般…

视频网站?电子商务?

从两个不同行业的网站&#xff08;视频分享、电子商务&#xff09;&#xff0c;看互联网业务平台的特征&#xff1a; 1. 两者的核心都是内容。一个是视频&#xff0c;它的特性是&#xff1a;信息载体、数字化&#xff1b;另一个是商品&#xff0c;它的特性是&#xff1a;…

Step by Step WebMatrix网站开发之二:使用WebMatrix(1)

第一次运行WebMatrix会看到如图1所示的窗口。 图1 第一次运行WebMatrix显示的窗口 我的网站 进入“我的网站”可看到自己设计过的网站。 从Web库创建网站 可以从“从Web库创建网站“中理由网络上开源的网站系统创建网站&#xff0c;如名气比较响的WordPress、phpwind等…

60款高质量的网站模板免费下载(上篇)

您可能还喜欢 分享45款高质量的免费(X)HTML/CSS模板最新30佳精美 PSD 网站模板免费下载寻找网页设计灵感的27个最佳网站推荐60佳灵感来自大自然的网页设计作品欣赏分享100佳精美的作品集网站设计案例当你想快速制作出一个网站的时候&#xff0c;网站模板就非常有用了。学习网页…

java 学习网站_JAVA程序员学习必备十大网站

作为开发者来说&#xff0c;必备的除了对编码的热情还要有自己的一套技巧&#xff0c;另外不可缺少的就是平时学习的网站。以下本人收集的 Java 开发者必备的网站&#xff0c;这些网站可以提供信息、以及一些很棒的讲座 , 还能解答一般问题、面试问题等&#xff0c;或许你会认为…

linux测试网页装载时间,如何使用curl命令测试网站加载速度

Curl命令是一种用于通过各种协议传输数据的工具。有了它&#xff0c;我们就可以非常准确的知道网站的加载时间。使用此命令&#xff0c;我们可以看到&#xff1a;请求收到响应之前的总时间(time_namelookup)TCP协议在远程服务器上完成的总时间(time_connect)文件传输开始的时间…