对于想要做软件外包的小伙伴们来说,每天登陆外包网站,并且搜索合适的项目,是很累人并且十分枯燥的事情。使用Python爬虫,可以自动对外包网站上面最新的软件外包项目进行搜索、提取和保存。可以大大提高大家的工作效率。

该项目使用Python爬虫,实现对项目外包网站TaskCity的项目信息抓取。并将信息保存到Excel文件中。主要包括两部分:网页抓取信息处理

网页抓取:采用urllib抓取读取网页,使用re正则提取有用的信息。

信息处理:使用openpyxl和pandas,将信息保存到Excel文件,网址使用超链接格式。

Spider.py

from urllib import request
import re
import time
import random
from bs4 import BeautifulSoup
import Disposer as Dp# 定义变量:URL 与 headers
base_url = 'http://www.taskcity.com'
url = 'http://www.taskcity.com/projects?utf8=%E2%9C%93&keywords=%E4%B8%8A%E6%B5%B7&enter=%E9%A1%B9%E7%9B%AE&commit=%E6%90%9C%E7%B4%A2' #向测试网站发送请求
#重构请求头,伪装成 Mac火狐浏览器访问,可以使用上表中任意浏览器的UA信息
headers = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:65.0) Gecko/20100101 Firefox/65.0'}data = {'名称': [],'发布时间': [],'预算': [],'链接': []}while(None != url):# 1、创建请求对象,包装ua信息req = request.Request(url=url,headers=headers)# 2、发送请求,获取响应对象res = request.urlopen(req)# 3、提取响应内容html = res.read().decode('utf-8')# 寻找HTML规律,书写正则表达式,使用正则表达式分组提取信息pattern = re.compile(r'<a title="(.*?)".*?项目发布时间:(.*?)</span><br/>.*?项目预算:(.*?)<br/>', re.S)r_list=pattern.findall(html)is_find = 0title_name = Dp.get_last_project_name("TaskCity")print(title_name)for info in r_list:if (info[0] != title_name):data['名称'].append(info[0])data['发布时间'].append(info[1])data['预算'].append(info[2])data['链接'].append(url)print(info)else:print("Get the last information, name: " + info[0])is_find = 1breakif (is_find == 1):break# 每爬取一个页面随机休眠1-2秒钟的时间time.sleep(random.randint(1, 2))soup = BeautifulSoup(html, "html.parser")url = soup.find('a', attrs={'rel': 'next'})if (url != None):url = url.get('href')url = base_url + str(url)Dp.insert_data_to_sheet_head(data, "TaskCity")

Disposer.py

import openpyxl
import pandas as pdfilename = '软件外包项目汇总.xlsx'def make_hyperlink(value):return '=HYPERLINK("%s", "%s")' % (value, "网址")def get_last_project_name(sheet_name):wb = openpyxl.load_workbook(filename)ws = wb.get_sheet_by_name(sheet_name)return ws.cell(row = 2, column = 1).valuedef insert_data_to_sheet_head(dict_data, sheet_name):# Returns a DataFramedf = pd.read_excel(filename, sheet_name)df_dict = pd.DataFrame.from_dict(dict_data)df_dict['链接'] = df_dict['链接'].apply(lambda x: make_hyperlink(x))wb = openpyxl.load_workbook(filename)ws = wb.get_sheet_by_name(sheet_name)links = []for i in range(2, ws.max_row + 1):  # 2nd arg in range() not inclusive, so add 1links.append(ws.cell(i, 4).value)df['链接'] = linksdf = pd.concat([df_dict, df])# Reassign the index labelsdf.index = [*range(df.shape[0])]df.to_excel(filename, sheet_name, index=False)def insert_data_to_sheet_tail(dict_data, sheet_name):# Returns a DataFramedf = pd.read_excel(filename, sheet_name)df_dict = pd.DataFrame.from_dict(dict_data)df_dict['链接'] = df_dict['链接'].apply(lambda x: make_hyperlink(x))wb = openpyxl.load_workbook(filename)ws = wb.get_sheet_by_name(sheet_name)links = []for i in range(2, ws.max_row + 1):  # 2nd arg in range() not inclusive, so add 1links.append(ws.cell(i, 4).value)df['链接'] = linksdf_dict = pd.concat([df, df_dict])# Reassign the index labelsdf_dict.index = [*range(df_dict.shape[0])]df_dict.to_excel(filename, sheet_name, index=False)

项目源代码:

PythonSpiderTaskCity.rar-Python文档类资源-CSDN下载

Python Spider: 爬取项目外包网站TaskCity相关推荐

  1. python爬表情包_教你用Python来爬取表情包网站的所有表情图片

    教你用Python来爬取表情包网站的所有表情图片 配置环境 安装Python 开发环境 3X系列 win + R 打开运行,输入cmd,输入python,进行验证是否安装Python win + R ...

  2. 详细实例:用python爬虫爬取幽默笑话网站!(建议收藏)

    前言: 今天为大家带来的内容是详细实例:用python爬虫爬取幽默笑话网站!(建议收藏),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下! 爬取网站为 ...

  3. Python爬虫爬取伯乐在线网站信息

    一.环境搭建 1.创建环境 执行pip install scrapy安装scrapy 使用scrapy startproject ArticleSpider创建scrapy项目 使用pycharm导入 ...

  4. Python轻松爬取Rosimm写真网站全部图片

    RosimmImage 爬取Rosimm写真网站图片 有图有真相 def main_start(url):"""爬虫入口,主要爬取操作""" ...

  5. Python爬虫爬取古诗文网站项目分享

    作为一个靠python自学入门的菜鸟,想和大家分享自己写的第一个也是目前为止唯一一个爬虫代码 写爬虫要具备的能力基础:python入门基础,html5基础知识,然后这边用的是scrapy框架,所以还要 ...

  6. Python爬虫爬取美剧网站

    一直有爱看美剧的习惯,一方面锻炼一下英语听力,一方面打发一下时间.之前是能在视频网站上面在线看的,可是自从广电总局的限制令之后,进口的美剧英剧等貌似就不在像以前一样同步更新了. 但是,作为一个宅dia ...

  7. python自动爬取更新电影网站_Python爬虫之—微信实时爬取电影咨询

    本文将介绍如何使用爬虫在微信对话中实现实时的电影咨询爬取功能,希望和大家一起来分享" 1. 撩妹起源 俗话说的好:少壮不撩妹,长大徒伤悲啊! 说的很对,但是在这个撩妹的时代,要想成功把到妹, ...

  8. python:爬取天气预报+美女网站数据信息

    一.爬取湛江天气预报信息 url:http://www.weather.com.cn/weather/10128100101A.shtml 1.思路分析: ①先爬取网页所有数据,div/ul/li,获 ...

  9. python 爬取百度知道,Python 爬虫爬取百度百科网站

    利用python写一个爬虫,爬取百度百科的某一个词条下面的全部链接和每一个链接内部的词条主题和摘要.利用request库爬取页面,然后利用BeautifulSoup对爬取到的页面提取url和关键内容. ...

最新文章

  1. 简议使用业务模型驱动进行软件的设计
  2. 手工安装kubernetes
  3. Fiddler抓包使用教程-Android应用抓包
  4. VMware开启NAT模式/仅主机模式后主机ping不通虚拟机的问题
  5. lamp和php,[LAMP]Apache和PHP的结合
  6. 统计分组的原则是要体现什么_跨境选品有哪些方法,要遵循什么原则?
  7. React Native 交互管理器InteractionManager
  8. 何时使用 Golang
  9. 移动端手势库设计与实践
  10. Linux 命令(35)—— iconv 命令
  11. 微pe工具箱 系统安装教程_微PE工具箱 V2.0正式版(附安装系统教程)
  12. C++通过生日判断星座
  13. 简述计算机病毒的传播4种途径,4计算机病毒的传播途径.ppt
  14. 几招紧急应对夏天雷雨天机房断电的方法!
  15. MySQL高手篇:精妙SQL语句介绍
  16. 伸缩自如的ElasticSearch——通过bboss操作和访问elasticsearch模式
  17. EFR32BG22性能
  18. 基本触发器和钟控触发器
  19. 阿里mPaas中扫一扫功能的接入
  20. 一个女程序员twitter上发了一条tweet

热门文章

  1. Linux进程通信——匿名管道、命名管道、管道的特性和共享内存
  2. K8S架构常用组件核心资源
  3. 30岁女会计转行学计算机,30多转行当会计怎么样?30岁转行做会计晚不晚-之了课堂...
  4. office正在连接到服务器,excel2010总是显示正在访问打印机,导致打开很慢,怎样...-office正在访问打印机,word一直正在连接到打...
  5. 正在连接192.168.100.200.22...无法打开到主机的连接。 在端口 23: 连接失败
  6. 微擎在平台入口不显示安装的模块_【微擎系统】2.0.8更新说明
  7. 操作Domino数据库的设计元素
  8. 拼多多Java岗校招-4面获得年薪66万offer
  9. Mybatis(见资源)
  10. [原创]三国人物简单分析