爬虫数据保存进excel

2017-11-06  本文已影响0人  Py_Explorer
  #encoding:utf-8
  #引入需要的模块
  import json  # 使用json解码 因为拉勾网的格式是json
  import requests  # 使用这个requests是得到网页源码
  import pandas  # 使用这个数据进行存储  
  import openpyxl
  items = []  # 定义空列表用来存放你得到的数据
  #  循环两页 这里爬取的是两页内容
  for i in range(1,2):
  # 传入data 因为这个url是post的请求方法 pn指的是页数 kd指的是你搜索的内容
      #反爬虫必要的参数要加
      data = {'first': 'true', 'pn': i, 'kd': 'python'}
      headers={
              "Referer":"https://www.lagou.com/jobs/list_python?px=default&city=全国",
              "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64)"
      }
      # 拉钩网的链接是固定的就变化的是页数 因为是post的提交方法 所以传入data
      yuan = requests.post('https://www.lagou.com/jobs/positionAjax.json?           px=default&needAddtionalResult=false&isSchoolJob=0', data=data,headers=headers).content
     # 使用json进行解码 因为返回的是一个json的格式
     yuan = json.loads(yuan)
     print yuan
     # 得到14个数据
     for i in range(14):
        item = []
        # 看下面的图片item里面的是什么数据
        item.append(yuan['content']['positionResult']['result'][i]['positionName'])
        item.append(yuan['content']['positionResult']['result'][i]['companyFullName'])
        item.append(yuan['content']['positionResult']['result'][i]['salary'])
        item.append(yuan['content']['positionResult']['result'][i]['city'])
        item.append(yuan['content']['positionResult']['result'][i]['positionAdvantage'])
        items.append(item)
        #  使用的是pands的存数据 存为xlsx就是excel格式
    data = pandas.DataFrame(items)
    data.to_excel('拉钩.xlsx')

工商代码

#coding=utf-8
import requests, datetime, json
from lxml import html
import pandas as pd
import sys
reload(sys)
sys.setdefaultencoding("utf-8")


headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99     Safari/537.36',
        'Host': 'www.sgs.gov.cn'
    }

yesterday = (datetime.date.today() +     datetime.timedelta(days=-1)).strftime('%Y-%m-%d')


def start_request(page=1):
    day_error_num = 0
    data = []
    while True:
        page_data = {'pageno': page}
        try:
            res = requests.post('http://www.sgs.gov.cn/shaic/dengjiBulletin!toNzsl.action', data=page_data, headers=headers, timeout=15)
        except Exception as e:
            print('%s页出现异常:%s' % (page_data, e))
            continue
        select = html.fromstring(res.text)
        trs = select.xpath('//table[@class="tgList"]/tr')[1:]
        for tr in trs:
            company_name = tr.xpath('./td[1]/text()')[0].strip()
            company_registr_id = tr.xpath('./td[2]/text()')[0].strip()
            company_creation_date = tr.xpath('./td[3]/text()')[0].strip()
            if company_creation_date == yesterday:
                day_error_num = 0
                data.append({
                    'company_name': company_name,
                    'company_registr_id': company_registr_id,
                    'company_creation_date': company_creation_date
                })
            else:
                day_error_num += 1
        print(page)
        if day_error_num >= 5:
            break
        page += 1
    return page, data


def deal_data():
    page, data = start_request()
    # result = {
    #     'page_num': page,
    #     'company_data': data
    # }
    # with open('%s.txt' % yesterday, 'w') as f:
    #     f.write(json.dumps(result))
    # print('%s is done' % yesterday)
    ###########################################################
    sercize = [d.values() for d in data]
    pd_result = pd.DataFrame(sercize, columns=[u'企业名称', u'注册号', u'设立日期'])
    pd_result.to_excel('%s.xls' % yesterday, encoding='gbk')


if __name__ == '__main__':
    deal_data()
上一篇 下一篇

猜你喜欢

热点阅读