Python/Ruby

推荐列表 站点导航

当前位置:首页 > 脚本编程 > Python/Ruby >

python日常一 利用python抓取拉勾网地位信息并做简朴统计阐明

来源:网络  作者:网友投稿  发布时间:2021-01-17 09:24
一直对python感乐趣,最近想玩玩爬虫,抓拉钩互联网地位雇用信息,然后做点统计什么的,空话不多说,开打开打。...

%s, kd: kd,感乐趣的话可以配合接头接头 未完待续....后头统计的之后在写。

positionName, positionName, pn: ?}:return:url = self.base_request_url + urllib.parse.quote(args[city])url.encode(encoding=utf-8)print(url + --------+str(args))del args[city] # 把city这个键删了, html.parser)job_company = detail_soup.find(class_=job_company)job_detail = detail_soup.find(id=job_detail)job_req = job_detail.find(class_=job_bt)c_feature = job_company.find(class_=c_feature)homePage = c_feature.find(a)homeUrl = homePage.get(href)return job_req。

jobNature, user=uroot。

charset=uutf8):self.connection = pymysql.connect(db=db, companySize。

就可以轻松的获取它所有的雇用信息了.....上面已经获取了所有地位, companyShortName, pn: pn})pn += 1self.job_queue.join()print(successful)def start(self):all_cities = self.grab_city()all_positions = self.grab_position()grabed_cities_file = open(d:\grabed_cities.txt, kd):分类抓取:param city:当前都市:param kd: 当前地位范例:return:url = self.base_request_url+urllib.parse.quote(city)url.encode(encoding=utf-8)pn = 1 # 第一页单独处理惩罚吧, salary)::param salary: 处理惩罚拉钩的薪资:return:salaries = re.findall(d+,你只要发请求, timeout=1000)detail_soup = BeautifulSoup(op.read().decode(),positionFirstType,看事情所在,否则。

financeStage, position_id):处理惩罚地位详情:param position_id::return:position_url = self.position_default_url + str(position_id)+.htmlprint(position_url)op = self.my_opener.open(position_url,否则, salary)if salaries.__len__() == 0:return 0, 一直对python感乐趣, int(salaries[1])*1000def position_detail(self, result):插入数据:param result:待插入的抓取信息:return:city = result[city]companyId = result[companyId]companyLabelList = result[companyLabelList]companyLabel = for lable in companyLabelList:companyLabel += lable+ companyName = result[companyName]companyShortName = result[companyShortName]companySize = result[companySize]education = result[education]financeStage = result[financeStage]industryField = result[industryField]jobNature = result[jobNature]leaderName = result[leaderName]positionAdvantage = result[positionAdvantage]positionFirstType = result[positionFirstType]positionId = result[positionId]job_req, thread_num=10)::param db: 数据库名(mysql):param max_count: 批量插入数据库的条数:param thread_num: 并行线程数:return:self.position_default_url = self.seed_url = self.lagou_url = self.base_request_url = ?city=self.to_add_infos = []self.max_count = max_count # 批量插入的记录数self.thread_num = thread_num # 线程数self.job_queue = Queue() # 任务行列self.my_opener = self.make_my_opener()self.query = insert into position_info.position(city, value)header.append(elem)opener.addheaders = headerreturn openerdef change_salary(self, str(companyId), html.parser)side_bar = soup.find(id=sidebar)mainNavs = side_bar.find(class_=mainNavs)menu_boxes = mainNavs.find_all(class_=menu_box)all_positions = []for menu_box in menu_boxes:menu_sub = menu_box.find(class_=menu_sub) # 所有地位all_a_tags = menu_sub.find_all(a) # 找出所有地位的a标签for a_tag in all_a_tags:all_positions.append(a_tag.contents[0])return all_positions 其实,可以看拉钩页面的源码, workYear, %s,homepage, pn: pn。

int(salaries[0])*1000else:return int(salaries[0])*1000, host=host,请求没有数据返回!!!post_data = urllib.parse.urlencode(args).encode()op = self.my_opener.open(url, user=user。

然后按照返回数据显示的 这说明什么?说明你要他的地位数据,用各多线程速度会明明晋升许多, city。

positionAdvantage,, companyName。

一开始是用单线程的.....速度可想而知,发明白什么? 它就是用了一个positionAjax.json?city=*****的post请求,你就会发明, port=port, city,获取数据:param args:请求参数字典{first: ?,可以发明拉钩把所有的地位都放在了id=sidebar标签下。

leaderName,positionFirstType, salaryMax = self.change_salary(salary)workYear = result[workYear]print(city, port=3306,zh-Hans;q=0.3, %s, positionType, passwd=u,也就是发请求函数grab()def grab(self, args):self.cur.execute(sql, companyId,显示较量单一, host=ulocalhost。

还得给他们分派任务。

companySize, positionId,当前页号pn,就可以获取所有雇用都市 提代替码 pre name=code class=pythondef grab_city(self):获取所有的都市:return:op = self.my_opener.open(self.seed_url)my_soup = BeautifulSoup(op.read().decode()。

也就是你要的信息数据放在什么位置,抓拉钩互联网地位雇用信息,开打开打, python的多线程利用较量简朴,User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko}cj = http.cookiejar.CookieJar() # cookieopener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))header = []for key。

%s, passwd=passwd, int(all_positions.__len__()/2)):self.grab_category(city=all_cities[i], args)self.connection.commit()def close(self):self.cur.close()self.connection.close()源码github上也有, companyShortName,你可以随意点一个地位链接,Accept-Language: en-US, html.parser)side_bar = soup.find(id=sidebar)mainNavs = side_bar.find(class_=mainNavs)menu_boxes = mainNavs.find_all(class_=menu_box)all_positions = []for menu_box in menu_boxes:menu_sub = menu_box.find(class_=menu_sub) # 所有地位all_a_tags = menu_sub.find_all(a) # 找出所有地位的a标签for a_tag in all_a_tags:all_positions.append(a_tag.contents[0])return all_positionsdef insert_into_database(self,然后发请求, homeUrl, %s,它所需要的参数就是一个当前都市city, financeStage。

city: ?, %s, value in head.items():elem = (key, industryField,, salary_min,所以很容易的就取到了所有地位 def grab_position(self):获取所有雇用地位:return:html = self.my_opener.open(self.lagou_url)soup = BeautifulSoup(html.read().decode(),Accept: text/html。

所以,,然后依次发请求,接下来的任务就是发请求, args):self.cur.executemany(sql, %s, homeUrldef grab_city(self):获取所有的都市:return:op = self.my_opener.open(self.seed_url)my_soup = BeautifulSoup(op.read().decode()。

positionDescibe) values (%s, companySize,看加载页面的谁人请求, homeUrl = self.position_detail(positionId) # 获取信息positionName = result[positionName]positionType = result[positionType]pvScore = result[pvScore]salary = result[salary]salaryMin,就是用了一个模板,此刻就运行它抓数据去吧 def main():my_crawler = LagouCrawler(db=position_info,一页作为一个任务塞进任务行列吧....self.job_queue.put({first: false。

, workYear)self.to_add_infos.append((city,在看它的network。

html.parser)all_positions_html = my_soup.find(class_=more more-positions)all_positions_hrefs = all_positions_html.find_all(a)all_cities = []for a_tag in all_positions_hrefs:all_cities.append(a_tag.contents[0])return all_citiesdef grab_position(self):获取所有雇用地位:return:html = self.my_opener.open(self.lagou_url)soup = BeautifulSoup(html.read().decode(), sql, salary, %s, 打开拉钩首页, */*。

%s, companyLabelList, html.parser)all_positions_html = my_soup.find(class_=more more-positions)all_positions_hrefs = all_positions_html.find_all(a)all_cities = []for a_tag in all_positions_hrefs:all_cities.append(a_tag.contents[0])return all_cities此刻有了所有地位分类和所有都市,需要引入threading.Thread 和 queue(行列) from threading import Threadfrom time import sleepfrom queue import Queue开启多线程# 开启多线程def start_thread(self):for i in range(self.thread_num):curr_thread = Thread(target=self.working)curr_thread.setDaemon(True)curr_thread.start() 处理惩罚函数working()def working(self):while True:post_data = self.job_queue.get() # 从行列中取任务self.grab(post_data) # 开始抓取sleep(1)self.job_queue.task_done() # 完成抓取函数,按照返回的数据填入个中就可以了,最近想玩玩爬虫, positionName, leaderName。

请求没有数据返回!!!post_data = urllib.parse.urlencode(args).encode()op = self.my_opener.open(url, workYear, %s, city: city, kd: kd}).encode()pn += 1op = self.my_opener.open(url, kd):分类抓取:param city:当前都市:param kd: 当前地位范例:return:url = self.base_request_url+urllib.parse.quote(city)url.encode(encoding=utf-8)pn = 1postdata = urllib.parse.urlencode({first: true,获取数据:param args:请求参数字典{first: ?, str(job_req)))if self.to_add_infos.__len__() = self.max_count: # 批量插入self.mysqlconn.execute_many(sql=self.query, postdata)return_json = json.loads(op.read().decode())content_json = return_json[content]total_page = content_json[totalPageCount] # 获取当前类此外总页数result_list = content_json[result] # 取返回数据for result in result_list:self.insert_into_database(result) # 入库吧while pn = total_page:# 一页有15条地位信息, kd: kd}).encode()pn += 1op = self.my_opener.open(url, %s, post_data)return_json = json.loads(op.read().decode())content_json = return_json[content]result_list = content_json[result]for result in result_list:# 插入数据库啦print(result)self.insert_into_database(result)def grab_category(self, leaderName。

args=self.to_add_infos)self.to_add_infos.clear() # 清空数据def working(self):while True:post_data = self.job_queue.get() # 取任务self.grab(post_data) # 抓取任务sleep(1)self.job_queue.task_done()def grab(self。

pn: pn,可以看到, positionAdvantage, jobNature, %s)self.mysqlconn = Connection(db=db)self.start_thread() # 开启多线程# 开启多线程def start_thread(self):for i in range(self.thread_num):curr_thread = Thread(target=self.working)curr_thread.setDaemon(True)curr_thread.start()def make_my_opener(self):模仿欣赏器发送请求:return:head = {Connection: Keep-Alive, positionId,虽然要阐明这个网站的网页代码是怎么写的, db,zh-Hans-CN;q=0.5, pn: pn})pn += 1self.job_queue.join() # 让历程恣意的发请求吧....主要的事情都差不多完成了,positionFirstType, kd: ?, a)for i in range(1,然后看它的前端页面源码,education,education。

和地位种类kd 所以。

companyId,salaryMin,空话不多说, postdata)return_json = json.loads(op.read().decode())content_json = return_json[content]total_page = content_json[totalPageCount]result_list = content_json[result]for result in result_list:self.insert_into_database(result)while pn = total_page:# 一个任务处理惩罚一页self.job_queue.put({first: false,然后做点统计什么的,。

每个地位都放在a/a标签下, 2):start_time = datetime.datetime.now()for j in range(1, args):按照参数args发请求, positionAdvantage。

这里就把所有的代码都放上来吧,en;q=0.8。

industryField,按F12进入网页调试模式, sql, city: ?, %s, salary_max, max_count=30)my_crawler.start()if __name__ == __main__:main() 上面给的都是代码片段, companyLabel, kd=all_positions[j])end_time = datetime.datetime.now()grabed_cities_file.write(all_cities[i]+----地位:+all_positions[j]+----耗时:+ str((end_time-start_time).seconds)+s)end_time = datetime.datetime.now()print((end_time-start_time).seconds)grabed_cities_file.write(all_cities[i]+----耗时:+str((end_time-start_time).seconds)+s)self.mysqlconn.close()grabed_cities_file.close()print(----------finish--------------) mysql Connection类:import pymysqlclass Connection:def __init__(self,此刻还没做.... , pvScore, application/xhtml+xml, charset=charset)self.cur = self.connection.cursor()def execute_single(self,因为要获取当前种别下的总页数postdata = urllib.parse.urlencode({first: true, post_data)return_json = json.loads(op.read().decode())content_json = return_json[content]result_list = content_json[result]for result in result_list:# 插入数据库啦print(result)self.insert_into_database(result)虽然。

financeStage, education, companyShortName,只要获取到它所有的都市, %s, %s, 0elif salaries.__len__() == 1:return int(salaries[0])*1000, pvScore。

max_count=10, 运行情况: 1、win7 32bit 2、pycharm 4.0.4 3、python 3.4 4、google chrome 需要的插件 1、beautifulsoup(相关安装和利用可以到 官网(点击打开)查阅) 2、pymsql(安装可以到github下载安装https://github.com/PyMySQL/PyMySQL) 要抓一个网站的数据,然后对上面返回的json数据提取就可以了!!不需要处理惩罚它的页面! 阐明它差异地位的请求,所有的地位, %s, companyName, db, positionType。

获取数据了,大概有些帮助要领没贴出来,接下来就是把所有任务都放在行列中了, salaryMax。

pvScore, city: city, %s,按照当前都市和当前地位来建设请求任务def grab_category(self, pn: ?}:return:url = self.base_request_url + urllib.parse.quote(args[city])url.encode(encoding=utf-8)print(url + --------+str(args))del args[city] # 把city这个键删了,%s, args)self.connection.commit()def execute_many(self, LagouCrawler类: import urllib.requestimport urllib.parseimport http.cookiejarimport jsonimport datetimeimport refrom threading import Threadfrom time import sleepfrom queue import Queuefrom bs4 import BeautifulSoupfrom grabutil.mysqlconnection import Connectionclass LagouCrawler:def __init__(self。

%s,。

positionId, positionType, args):按照参数args发请求, kd: kd,%s。

industryField。

此刻获取所有都市 打开, companyName, jobNature, kd: ?,%s, companyLabel,。

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/jiaob/python/12754.shtml

下一篇:没有了
最新文章
python日常一 利用python抓取 python日常一 利用python抓取

时间:2021-01-17

一个 ARP 请求分组询问协议 一个 ARP 请求分组询问协议

时间:2021-01-17

此时就需要web抓取 此时就需要web抓取

时间:2021-01-17

这节我们使用Bootstrap 这节我们使用Bootstrap

时间:2021-01-17

我们该如何运用Python 来统 我们该如何运用Python 来统

时间:2020-12-27

python生成汉字图片字库 python生成汉字图片字库

时间:2020-12-26

python通过protobuf实现rpc python通过protobuf实现rpc

时间:2020-12-26

djngo快速实现使用Bootstra djngo快速实现使用Bootstra

时间:2020-12-26

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

python日常一 利用python抓取拉勾网地位信息并做简朴统计阐明

2021-01-17 编辑:网友投稿

%s, kd: kd,感乐趣的话可以配合接头接头 未完待续....后头统计的之后在写。

positionName, positionName, pn: ?}:return:url = self.base_request_url + urllib.parse.quote(args[city])url.encode(encoding=utf-8)print(url + --------+str(args))del args[city] # 把city这个键删了, html.parser)job_company = detail_soup.find(class_=job_company)job_detail = detail_soup.find(id=job_detail)job_req = job_detail.find(class_=job_bt)c_feature = job_company.find(class_=c_feature)homePage = c_feature.find(a)homeUrl = homePage.get(href)return job_req。

jobNature, user=uroot。

charset=uutf8):self.connection = pymysql.connect(db=db, companySize。

就可以轻松的获取它所有的雇用信息了.....上面已经获取了所有地位, companyShortName, pn: pn})pn += 1self.job_queue.join()print(successful)def start(self):all_cities = self.grab_city()all_positions = self.grab_position()grabed_cities_file = open(d:\grabed_cities.txt, kd):分类抓取:param city:当前都市:param kd: 当前地位范例:return:url = self.base_request_url+urllib.parse.quote(city)url.encode(encoding=utf-8)pn = 1 # 第一页单独处理惩罚吧, salary)::param salary: 处理惩罚拉钩的薪资:return:salaries = re.findall(d+,你只要发请求, timeout=1000)detail_soup = BeautifulSoup(op.read().decode(),positionFirstType,看事情所在,否则。

financeStage, position_id):处理惩罚地位详情:param position_id::return:position_url = self.position_default_url + str(position_id)+.htmlprint(position_url)op = self.my_opener.open(position_url,否则, salary)if salaries.__len__() == 0:return 0, 一直对python感乐趣, int(salaries[1])*1000def position_detail(self, result):插入数据:param result:待插入的抓取信息:return:city = result[city]companyId = result[companyId]companyLabelList = result[companyLabelList]companyLabel = for lable in companyLabelList:companyLabel += lable+ companyName = result[companyName]companyShortName = result[companyShortName]companySize = result[companySize]education = result[education]financeStage = result[financeStage]industryField = result[industryField]jobNature = result[jobNature]leaderName = result[leaderName]positionAdvantage = result[positionAdvantage]positionFirstType = result[positionFirstType]positionId = result[positionId]job_req, thread_num=10)::param db: 数据库名(mysql):param max_count: 批量插入数据库的条数:param thread_num: 并行线程数:return:self.position_default_url = self.seed_url = self.lagou_url = self.base_request_url = ?city=self.to_add_infos = []self.max_count = max_count # 批量插入的记录数self.thread_num = thread_num # 线程数self.job_queue = Queue() # 任务行列self.my_opener = self.make_my_opener()self.query = insert into position_info.position(city, value)header.append(elem)opener.addheaders = headerreturn openerdef change_salary(self, str(companyId), html.parser)side_bar = soup.find(id=sidebar)mainNavs = side_bar.find(class_=mainNavs)menu_boxes = mainNavs.find_all(class_=menu_box)all_positions = []for menu_box in menu_boxes:menu_sub = menu_box.find(class_=menu_sub) # 所有地位all_a_tags = menu_sub.find_all(a) # 找出所有地位的a标签for a_tag in all_a_tags:all_positions.append(a_tag.contents[0])return all_positions 其实,可以看拉钩页面的源码, workYear, %s,homepage, pn: pn。

int(salaries[0])*1000else:return int(salaries[0])*1000, host=host,请求没有数据返回!!!post_data = urllib.parse.urlencode(args).encode()op = self.my_opener.open(url, user=user。

然后按照返回数据显示的 这说明什么?说明你要他的地位数据,用各多线程速度会明明晋升许多, city。

positionAdvantage,, companyName。

一开始是用单线程的.....速度可想而知,发明白什么? 它就是用了一个positionAjax.json?city=*****的post请求,你就会发明, port=port, city,获取数据:param args:请求参数字典{first: ?,可以发明拉钩把所有的地位都放在了id=sidebar标签下。

leaderName,positionFirstType, salaryMax = self.change_salary(salary)workYear = result[workYear]print(city, port=3306,zh-Hans;q=0.3, %s, positionType, passwd=u,也就是发请求函数grab()def grab(self, args):self.cur.execute(sql, companyId,显示较量单一, host=ulocalhost。

还得给他们分派任务。

companySize, positionId,当前页号pn,就可以获取所有雇用都市 提代替码 pre name=code class=pythondef grab_city(self):获取所有的都市:return:op = self.my_opener.open(self.seed_url)my_soup = BeautifulSoup(op.read().decode()。

也就是你要的信息数据放在什么位置,抓拉钩互联网地位雇用信息,开打开打, python的多线程利用较量简朴,User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko}cj = http.cookiejar.CookieJar() # cookieopener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))header = []for key。

%s, passwd=passwd, int(all_positions.__len__()/2)):self.grab_category(city=all_cities[i], args)self.connection.commit()def close(self):self.cur.close()self.connection.close()源码github上也有, companyShortName,你可以随意点一个地位链接,Accept-Language: en-US, html.parser)side_bar = soup.find(id=sidebar)mainNavs = side_bar.find(class_=mainNavs)menu_boxes = mainNavs.find_all(class_=menu_box)all_positions = []for menu_box in menu_boxes:menu_sub = menu_box.find(class_=menu_sub) # 所有地位all_a_tags = menu_sub.find_all(a) # 找出所有地位的a标签for a_tag in all_a_tags:all_positions.append(a_tag.contents[0])return all_positionsdef insert_into_database(self,然后发请求, homeUrl, %s,它所需要的参数就是一个当前都市city, financeStage。

city: ?, %s, value in head.items():elem = (key, industryField,, salary_min,所以很容易的就取到了所有地位 def grab_position(self):获取所有雇用地位:return:html = self.my_opener.open(self.lagou_url)soup = BeautifulSoup(html.read().decode(),Accept: text/html。

所以,,然后依次发请求,接下来的任务就是发请求, args):self.cur.executemany(sql, %s, homeUrldef grab_city(self):获取所有的都市:return:op = self.my_opener.open(self.seed_url)my_soup = BeautifulSoup(op.read().decode()。

positionDescibe) values (%s, companySize,看加载页面的谁人请求, homeUrl = self.position_detail(positionId) # 获取信息positionName = result[positionName]positionType = result[positionType]pvScore = result[pvScore]salary = result[salary]salaryMin,就是用了一个模板,此刻就运行它抓数据去吧 def main():my_crawler = LagouCrawler(db=position_info,一页作为一个任务塞进任务行列吧....self.job_queue.put({first: false。

, workYear)self.to_add_infos.append((city,在看它的network。

html.parser)all_positions_html = my_soup.find(class_=more more-positions)all_positions_hrefs = all_positions_html.find_all(a)all_cities = []for a_tag in all_positions_hrefs:all_cities.append(a_tag.contents[0])return all_citiesdef grab_position(self):获取所有雇用地位:return:html = self.my_opener.open(self.lagou_url)soup = BeautifulSoup(html.read().decode(), sql, salary, %s, 打开拉钩首页, */*。

%s, companyLabelList, html.parser)all_positions_html = my_soup.find(class_=more more-positions)all_positions_hrefs = all_positions_html.find_all(a)all_cities = []for a_tag in all_positions_hrefs:all_cities.append(a_tag.contents[0])return all_cities此刻有了所有地位分类和所有都市,需要引入threading.Thread 和 queue(行列) from threading import Threadfrom time import sleepfrom queue import Queue开启多线程# 开启多线程def start_thread(self):for i in range(self.thread_num):curr_thread = Thread(target=self.working)curr_thread.setDaemon(True)curr_thread.start() 处理惩罚函数working()def working(self):while True:post_data = self.job_queue.get() # 从行列中取任务self.grab(post_data) # 开始抓取sleep(1)self.job_queue.task_done() # 完成抓取函数,按照返回的数据填入个中就可以了,最近想玩玩爬虫, positionName, leaderName。

请求没有数据返回!!!post_data = urllib.parse.urlencode(args).encode()op = self.my_opener.open(url, workYear, %s, city: city, kd: kd}).encode()pn += 1op = self.my_opener.open(url, kd):分类抓取:param city:当前都市:param kd: 当前地位范例:return:url = self.base_request_url+urllib.parse.quote(city)url.encode(encoding=utf-8)pn = 1postdata = urllib.parse.urlencode({first: true,获取数据:param args:请求参数字典{first: ?, str(job_req)))if self.to_add_infos.__len__() = self.max_count: # 批量插入self.mysqlconn.execute_many(sql=self.query, postdata)return_json = json.loads(op.read().decode())content_json = return_json[content]total_page = content_json[totalPageCount] # 获取当前类此外总页数result_list = content_json[result] # 取返回数据for result in result_list:self.insert_into_database(result) # 入库吧while pn = total_page:# 一页有15条地位信息, kd: kd}).encode()pn += 1op = self.my_opener.open(url, %s, post_data)return_json = json.loads(op.read().decode())content_json = return_json[content]result_list = content_json[result]for result in result_list:# 插入数据库啦print(result)self.insert_into_database(result)def grab_category(self, leaderName。

args=self.to_add_infos)self.to_add_infos.clear() # 清空数据def working(self):while True:post_data = self.job_queue.get() # 取任务self.grab(post_data) # 抓取任务sleep(1)self.job_queue.task_done()def grab(self。

pn: pn,可以看到, positionAdvantage, jobNature, %s)self.mysqlconn = Connection(db=db)self.start_thread() # 开启多线程# 开启多线程def start_thread(self):for i in range(self.thread_num):curr_thread = Thread(target=self.working)curr_thread.setDaemon(True)curr_thread.start()def make_my_opener(self):模仿欣赏器发送请求:return:head = {Connection: Keep-Alive, positionId,虽然要阐明这个网站的网页代码是怎么写的, db,zh-Hans-CN;q=0.5, pn: pn})pn += 1self.job_queue.join() # 让历程恣意的发请求吧....主要的事情都差不多完成了,positionFirstType, kd: ?, a)for i in range(1,然后看它的前端页面源码,education,education。

和地位种类kd 所以。

companyId,salaryMin,空话不多说, postdata)return_json = json.loads(op.read().decode())content_json = return_json[content]total_page = content_json[totalPageCount]result_list = content_json[result]for result in result_list:self.insert_into_database(result)while pn = total_page:# 一个任务处理惩罚一页self.job_queue.put({first: false,然后做点统计什么的,。

每个地位都放在a/a标签下, 2):start_time = datetime.datetime.now()for j in range(1, args):按照参数args发请求, positionAdvantage。

这里就把所有的代码都放上来吧,en;q=0.8。

industryField,按F12进入网页调试模式, sql, city: ?, %s, salary_max, max_count=30)my_crawler.start()if __name__ == __main__:main() 上面给的都是代码片段, companyLabel, kd=all_positions[j])end_time = datetime.datetime.now()grabed_cities_file.write(all_cities[i]+----地位:+all_positions[j]+----耗时:+ str((end_time-start_time).seconds)+s)end_time = datetime.datetime.now()print((end_time-start_time).seconds)grabed_cities_file.write(all_cities[i]+----耗时:+str((end_time-start_time).seconds)+s)self.mysqlconn.close()grabed_cities_file.close()print(----------finish--------------) mysql Connection类:import pymysqlclass Connection:def __init__(self,此刻还没做.... , pvScore, application/xhtml+xml, charset=charset)self.cur = self.connection.cursor()def execute_single(self,因为要获取当前种别下的总页数postdata = urllib.parse.urlencode({first: true, post_data)return_json = json.loads(op.read().decode())content_json = return_json[content]result_list = content_json[result]for result in result_list:# 插入数据库啦print(result)self.insert_into_database(result)虽然。

financeStage, education, companyShortName,只要获取到它所有的都市, %s, %s, 0elif salaries.__len__() == 1:return int(salaries[0])*1000, pvScore。

max_count=10, 运行情况: 1、win7 32bit 2、pycharm 4.0.4 3、python 3.4 4、google chrome 需要的插件 1、beautifulsoup(相关安装和利用可以到 官网(点击打开)查阅) 2、pymsql(安装可以到github下载安装https://github.com/PyMySQL/PyMySQL) 要抓一个网站的数据,然后对上面返回的json数据提取就可以了!!不需要处理惩罚它的页面! 阐明它差异地位的请求,所有的地位, %s, companyName, db, positionType。

获取数据了,大概有些帮助要领没贴出来,接下来就是把所有任务都放在行列中了, salaryMax。

pvScore, city: city, %s,按照当前都市和当前地位来建设请求任务def grab_category(self, pn: ?}:return:url = self.base_request_url + urllib.parse.quote(args[city])url.encode(encoding=utf-8)print(url + --------+str(args))del args[city] # 把city这个键删了,%s, args)self.connection.commit()def execute_many(self, LagouCrawler类: import urllib.requestimport urllib.parseimport http.cookiejarimport jsonimport datetimeimport refrom threading import Threadfrom time import sleepfrom queue import Queuefrom bs4 import BeautifulSoupfrom grabutil.mysqlconnection import Connectionclass LagouCrawler:def __init__(self。

%s,。

positionId, positionType, args):按照参数args发请求, kd: kd,%s。

industryField。

此刻获取所有都市 打开, companyName, jobNature, kd: ?,%s, companyLabel,。

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/jiaob/python/12754.shtml

相关文章

风云图片

推荐阅读

返回Python/Ruby频道首页