#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()
网友评论