热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

利用python在windows环境下爬取赶集网工作信息。

主要用到了多进程和多线程的知识,最后结果保存成csv文件格式,如有需要可改成数据库版本。对用到的库做下简要介绍,具体请参考官方文档:xpinyin.Pinyin:将输入的中文转成拼音concurren

主要用到了多进程和多线程的知识,最后结果保存成csv文件格式,如有需要可改成数据库版本。

对用到的库做下简要介绍,具体请参考官方文档:

  1. xpinyin.Pinyin:将输入的中文转成拼音
  2. concurrent.futures.ProcessPoolExecutor:多进程
  3. concurrent.futures.ThreadPoolExecutor:多线程
# -*- coding: utf-8 -*-
#
@Author: Studog
#
@Date: 2017/5/24 9:27

import requests
import lxml.html as HTML
import csv
from xpinyin import Pinyin
import os
import concurrent.futures


class GanjiSpider(object):

def __init__(self):
self.city
= input("请输入城市名:\n")
p
= Pinyin()
city_name
= p.get_initials(self.city, '').lower()
self.url
= 'http://{0}.ganji.com/v/zhaopinxinxi/p1/'.format(city_name)
self.save_path
= r'E:\data\ganji.csv'
file_dir
= os.path.split(self.save_path)[0]
if not os.path.isdir(file_dir):
os.makedirs(file_dir)
if not os.path.exists(self.save_path):
os.system(r
'echo > %s' % self.save_path)

def get_job(self):
flag
= True
with open(self.save_path,
'w', newline='') as f:
writer
= csv.writer(f)
writer.writerow([
'职位名称', '月薪', '最低学历', '工作经验', '年龄', '招聘人数','工作地点'])
while flag:
html
= HTML.fromstring(requests.get(self.url).text)
content
= html.xpath("//li[@class='fieldulli']/a/@href")
next_page
= html.xpath("//li/a[@class='next']/@href")
with concurrent.futures.ProcessPoolExecutor() as executor:
executor.map(self.get_url, content)
if next_page:
self.url
= next_page[0]
else:
flag
= False

def get_url(self, html_page):
html
= HTML.fromstring(requests.get(html_page).text)
job_list
= html.xpath("//dl[@class='job-list clearfix']/dt/a/@href")
with concurrent.futures.ThreadPoolExecutor() as executor:
executor.map(self.get_info, job_list)

def get_info(self, job_url):
html
= HTML.fromstring(requests.get(job_url).text)
name
= html.xpath("//li[@class='fl']/em/a/text()")
info
= html.xpath("//li[@class='fl']/em/text()")[1:]
address
= html.xpath(("//li[@class='fl w-auto']/em//text()"))
if name and len(info) == 5 and address:
info[
2] = info[2].strip()
address[
2] = address[2].strip()
address
= ''.join(address)
info.append(address)
name.extend(info)
print(name)
with open(self.save_path,
'a', newline='') as f:
writer
= csv.writer(f)
writer.writerow(name)

if __name__ == '__main__':
gj
= GanjiSpider()
gj.get_job()

 

 

 

 


推荐阅读
  • 本文介绍如何使用Python进行文本处理,包括分词和生成词云图。通过整合多个文本文件、去除停用词并生成词云图,展示文本数据的可视化分析方法。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文详细介绍了如何使用Python编写爬虫程序,从豆瓣电影Top250页面抓取电影信息。文章涵盖了从基础的网页请求到处理反爬虫机制,再到多页数据抓取的全过程,并提供了完整的代码示例。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 本文介绍了在Windows环境下使用pydoc工具的方法,并详细解释了如何通过命令行和浏览器查看Python内置函数的文档。此外,还提供了关于raw_input和open函数的具体用法和功能说明。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
  • 本文详细介绍了Python中文件的基本操作,包括打开、读取、写入和关闭文件的方法,并通过实例展示了如何将Excel文件转换为CSV文件以及进一步转换为HTML文件。此外,还涉及了成绩等级替换的具体实现。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 使用Pandas高效读取SQL脚本中的数据
    本文详细介绍了如何利用Pandas直接读取和解析SQL脚本,提供了一种高效的数据处理方法。该方法适用于各种数据库导出的SQL脚本,并且能够显著提升数据导入的速度和效率。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
author-avatar
火影魂XJ_710
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有