1、爬虫的概述
(1)爬取数据
(2)反扒机制:
#1、非浏览器请求头判断
#2、IP限制
#3、验证码
#4、封账号
2、爬虫操作流程
(1)模拟浏览器发送请求
(2)下载网页代码
(3)只提取有用的数据
(4)存放于数据库或文件中
3、实战
import requests
import re
#创建一个excel存储数据
import xlwt
workBook = xlwt.Workbook(encoding='utf-8')#创建一个文件
workSheet = workBook.add_sheet('51job.res')#在文件对象中创建一个sheet
colName = ['职位名','公司名','工作地点','薪资','发布时间']#建立初始化放置数据位置
for col in range(0,len(colName)):#存储数据排头
workSheet.write(0,col,colName[col])
#步骤1、爬取数据
def web(i= 1):
web_url =f'https://search.51job.com/list/090200,000000,2720,00,9,99,%2520,2,{i}.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare='
global resp
resp = requests.get(web_url)#获取网页信息
resp.encoding = 'gbk'#转换为gbk格式
web()
N = int(re.findall('<span class="td">共(.*?)页,到第</span>', resp.text, re.S)[0])#获取数据页数
line = 1
for i in range(1,N+1):
print(f'第【{i}】页数据')#console中打印出内容,防止出错
web(i)
info = re.findall('<div class="el">(.*?)</div>',resp.text,re.S)
for one in info:
# print(one)
temp = re.findall('<a target="_blank" title="(.*?)" href=',one,re.S)
jobName = temp[0]
companyName = temp[1]
address = re.findall('<span class="t3">(.*?)</span>',one,re.S)[0]
salary = re.findall('<span class="t4">(.*?)</span>',one,re.S)[0]
jobTime = re.findall('<span class="t5">(.*?)</span>',one,re.S)[0]
print(jobName,'|',companyName,'|',address,'|',salary,'|',jobTime)#打印出内容,防止出错
work = [jobName,companyName,address,salary,jobTime]
for one in range(len(work)):
workSheet.write(line, one, work[one])
line += 1
print('---------------------------------------------------------------')
workBook.save(r'D:\Automated Testing Tool\kill\51job.xls')#存放磁盘路径
我前面有篇文章是主要些xlrd,excel的数据读取,及时对数据进行操作。
本片文章杂糅知识点较多,主要是xlwt,excel的数据插入、正则、requests、基础语法等。
还不是很熟练,还需要多练习练习。