# 1.把之间案例,使用bs4,正则,xpath,进行数据提取。
# 2.爬取拉钩网上的所有python职位。 from urllib import request,parse
import json,random
#导入xlsxwriter 主要用于生成excel表格对象
import xlsxwriter #创建python的职位类
class python_position:
def __init__(self,page,number):
self.page = page
self.number = number
#调用创建excel对象的函数
self.create_book()
self.page_chuli() print(self.page,self.number)#1 0 #创建excel对象函数
def create_book(self):
#创建excel对象
self.workbook_attr = xlsxwriter.Workbook('test1.xlsx')
#创建表对象,用于写入字符串
self.worksheet = self.workbook_attr.add_worksheet('test1') #处理页码数量函数
def page_chuli(self):
#每次页码不一样 也就是number不一样
for page in range(1, 31):
self.page = page
self.user_agent()
self.number += 1
self.workbook_attr.close() def user_agent(self):
#浏览器列表,每次访问可以用不同的浏览器访问
user_agent_list = [
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.152 Safari/537.36',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36',
'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0',
'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0',
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.152 Safari/537.36',
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
]
#随机选取一个浏览器访问
self.user_agent_str = random.choice(user_agent_list)
#调用拉钩函数
self.lagou() def lagou(self):
#职位请求地址
base_url = "https://www.lagou.com/jobs/positionAjax.json?city=%E5%8C%97%E4%BA%AC&needAddtionalResult=false&isSchoolJob=0"
#判断是否是第一次访问,第二次访问data的值不一样
if self.page == 1:
first = 'true'
else:
first = 'false'
data = {
'first':first,
'pn':self.page,
'kd':'python'
}
print('page:',self.page)
#参数拼接及转码,生成是字符串格式, 注意:长度下面的headers用的到
data = parse.urlencode(data)
#一定要比较每次page不一样的时候headers的各项的细微差别 这个很重要 也是能否爬取数据的关键
#在这里Content-Length,User-Agent的值相对来说比较重要
headers = {
'Accept': 'application/json, text/javascript, */*; q=0.01',
# Accept-Encoding:gzip, deflate
'Accept-Language': 'zh-CN,zh;q=0.8',
'Connection': 'keep-alive',
'Content-Length': len(data),
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Cookie': 'user_trace_token=20180310205250-ccfd21f6-5b57-4e04-b90c-5e547e18d391; LGUID=20180310205255-f3afa6e4-2461-11e8-a8b5-525400f775ce; hideSliderBanner20180305WithTopBannerC=1; X_HTTP_TOKEN=673c8ae0b29d830c65e9812a6aeeb211; ab_test_random_num=0; JSESSIONID=ABAAABAAADEAAFI0BD8484557BF60A48BF2BDD6AA4C5D33; _putrc=318C0D90043747B6123F89F2B170EADC; login=true; unick=%E5%BC%A0%E6%B3%A2; showExpriedIndex=1; showExpriedCompanyHome=1; showExpriedMyPublish=1; hasDeliver=0; gate_login_token=d46c3e3008cb0364e7b47d9d261956a39273c72d679a1b0eb644e03620c100fa; TG-TRACK-CODE=index_navigation; _gid=GA1.2.1883607132.1520686376; _ga=GA1.2.2068283511.1520686375; LGSID=20180310215122-1e408aca-246a-11e8-a8ed-525400f775ce; LGRID=20180310233852-22b0d3ee-2479-11e8-a921-525400f775ce; Hm_lvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1520686378,1520689884; Hm_lpvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1520696337; SEARCH_ID=458b8d44186948ceb472c3d662f08528; index_location_city=%E5%8C%97%E4%BA%AC',
'Host': 'www.lagou.com',
'Origin': 'https://www.lagou.com',
'Referer': 'https://www.lagou.com/jobs/list_python?city=%E5%8C%97%E4%BA%AC&cl=false&fromSearch=true&labelWords=&suginput=',
"User-Agent": self.user_agent_str,
'X-Anit-Forge-Code': 0,
'X-Anit-Forge-Token': 'None',
'X-Requested-With': 'XMLHttpRequest'
}
req = request.Request(url=base_url,data=bytes(data,encoding='utf-8'),headers=headers)
response = request.urlopen(req)
html = response.read()
html = html.decode('utf-8') #使用json格式化,生成一个字典,然后从字典里头取值就可以,下面就是取值的过程,想要啥就可以啥
json_data = json.loads(html)
# print(json_data)
positionResult = json_data['content']['positionResult']
# print(positionResult)
self.result_list = positionResult['result']
print(self.result_list)
self.workbook() def workbook(self): for result in self.result_list:
# print(len(result))
# print(len(result))
# print(result)
self.worksheet1(result)
self.number += 1
print(self.number)
print('~~~~~~~~~~~~~~~~~~~~~haha~~~~~~~~~~~~~~~~~~~~~~~')
# self.workbook_attr.close()
# print(self.number)
def worksheet1(self,result):
# print(self.worksheet,result,self.number)
keys = list(result.keys()) if self.number == 0:
self.keys_list = keys
for i in range(len(keys)):
# 向work中添加数据 def write(self, row, col, *args):
# write第一个参数是行,第二个参数是列,第三个是要写入的参数名称
print(keys[i], type(keys[i]),i)
self.worksheet.write(0, i, str(keys[i]))
print('~~~~~~~~~~~~~~~~~~~~0~~~~~~~~~~~~~~~~~~~~~~~~~~~~~') values = []
for k in self.keys_list:
values.append(result[k])
# print(type(keys))
# values = list(result.values())
# print(type(values))
for i in range(len(values)):
# 向work中添加数据 def write(self, row, col, *args):
# write第一个参数是行,第二个参数是列,第三个是要写入的参数名称
print(str(values[i]),i,len(values))
self.worksheet.write(self.number+1, i, str(values[i]))
print('------------------------1-------------------------------')
# workbook.close() if __name__ == '__main__':
lagou_python = python_position(1,0)

爬取拉勾网所有python职位并保存到excel表格 对象方式的更多相关文章

  1. Python爬取猫眼电影100榜并保存到excel表格

    首先我们前期要导入的第三方类库有; 通过猫眼电影100榜的源码可以看到很有规律 如: 亦或者是: 根据规律我们可以得到非贪婪的正则表达式 """<div class ...

  2. 使用requests、BeautifulSoup、线程池爬取艺龙酒店信息并保存到Excel中

    import requests import time, random, csv from fake_useragent import UserAgent from bs4 import Beauti ...

  3. 使用requests、re、BeautifulSoup、线程池爬取携程酒店信息并保存到Excel中

    import requests import json import re import csv import threadpool import time, random from bs4 impo ...

  4. 爬取拉勾网招聘信息并使用xlwt存入Excel

    xlwt 1.3.0 xlwt 文档 xlrd 1.1.0 python操作excel之xlrd 1.Python模块介绍 - xlwt ,什么是xlwt? Python语言中,写入Excel文件的扩 ...

  5. 爬取前尘无忧python职位信息并保存到mongo数据库

    1.re实现 import re,os import requests from requests.exceptions import RequestException MAX_PAGE = 10 # ...

  6. 爬取淘宝商品数据并保存在excel中

    1.re实现 import requests from requests.exceptions import RequestException import re,json import xlwt,x ...

  7. python 数据如何保存到excel中--xlwt

    第一步:下载xlwt 首先要下载xlwt,(前提是你已经安装好了Python) 下载地址:  https://pypi.python.org/pypi/xlwt/   下载第二个   第二步:安装xl ...

  8. 自动网页截图并指定元素位置裁剪图片并保存到excel表格

    # coding=utf-8 import os import time from selenium import webdriver from selenium.webdriver.chrome.o ...

  9. 将查询列表内容保存到excel表格中,并保存到相应的盘中

    1.先导入相应的jar包 2.一个小的Demo测试[实体类+测试类:保存excel的方法] Student实体类 public class Student{ private int id; priva ...

随机推荐

  1. python读取ini文件时,特殊字符的读取

    前言: 使用python在读取配置文件时,由于配置文件中存在特殊字符,读取时出现了以下错误: configparser.InterpolationSyntaxError: '%' must be fo ...

  2. Java的socket编程中关于bufferedWriter的发送问题

    BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); String send ...

  3. GitHub 风格的 Markdown 语法

    GitHub 风格的 Markdown 语法 [译] GitHub 风格的 Markdown 语法 Original: GitHub Flavored Markdown - GitHub Help T ...

  4. 剑指offer学习--初级c++面试题

    定义一个空的类型,里面没有任何成员函数和成员变量,对该类型求sizeof,得到的结果是多少? 答案是1.空类型中的实例中不包含任何信息,本来求sizeof应该是0,但是当我们声明该类型的实例的时候,他 ...

  5. 使用grunt0.4进行js代码混淆

    1.grunt是基于node,node需要>=0.8.0的稳定版本(奇数是开发版,偶数是稳定版) 2.安装grunt脚手架 (mac电脑需要权限  在前面加上 sudo) npm install ...

  6. 解决嵌套在ScrollView中的TableView滑动手势冲突问题

    最近在迭代开发公司项目的时候遇到了一个问题,在可以左右切换标签视图的ScrollView中嵌套了两个TableView用于展示视图,感觉一切so easy的情况下,问题出现了,因为左右两个视图既可以实 ...

  7. 二、RabbitMQ操作

    1.RabbitMQ发送与接收. 2.RabbitMQ发送与接收. 3.RabbitMQ发送与接收.

  8. 初学Java 彩票

    import java.util.Scanner; public class Lottery { public static void main(String[] agrs) { ); Scanner ...

  9. 洛谷 P2863 [USACO06JAN]牛的舞会The Cow Prom(Tarjan)

    一道tarjan的模板水题 在这里还是着重解释一下tarjan的代码 #include<iostream> #include<cstdio> #include<algor ...

  10. 人生苦短_我用Python_dict(字典)_003

    # coding=utf-8 # 字典 {"key":"values"} 无序的 # dict 可以包含任何类型的数据 values可以是任何数据类型 key必 ...