requests爬数据–python
本人对于python用的不是很多,也无很深入的学过,但因为之前工作需要,用到python爬系统数据,自己研究了很久,查了很多资料,本人找到两篇很不错的总结(requests的用法及数据写入Excel),文章最后有链接。我用的是requests模块,简单实用,Requests模块缺陷:不能执行JS 和CSS 代码。
用户获取网络数据的方式:
方式1:浏览器提交请求—>下载网页代码—>解析成页面
方式2:模拟浏览器发送请求(获取网页代码)—>提取有用的数据—>存放于数据库或文件中,爬虫要做的就是方式2。
基本思路:
- 获取页面的url,cookies,headers,观察url的变化规律(用于多页爬取)
- 使用.get发起请求使用.get发起请求
- 服务器相应(正常),会得到回应
- 解析内容(本文返回结果为josn模块,所以解析josn)
- xlwt保存为xls格式
爬虫过程
某滴官方车管系统
这个案例是我18年9月份爬的数据,当时刚入职新公司,数据不全,到处整数据,这个系统也是其中之一,第一次自己尝试爬虫,很多辛酸泪,(主要完全不知道如何下手)当然你也可以一页一页复制,总共507页(5000多条数据),如果一页30s来算(包括网络、copy到文件等),花时15210s,整整4个多小时,现在页面数应该是这个数的2倍多。
代码如下:
#爬取小桔系统司机基本信息
import requests #requests载入
from bs4 import BeautifulSoup
import xlwt #xlwt载入
#创建工作簿
wbk = xlwt.Workbook(encoding='utf-8')
#创建工作表
sheet = wbk.add_sheet('sheet 1', cell_overwrite_ok=True)
listhead=['订单号','车牌','车型','状态','司机姓名','电话','租期','租金','押金']
for j in range(len(listhead)):
sheet.write(0,j,listhead[j])
page=1
#爬取分页信息
m=1
n=0
o=1
p=6
while page<508:
url1="https://car.**********-gateway*******8der/list"
cookie={'_ga':'GA1.2.1423950152.1550627306',
'_gid':'GA1.2.17*******2.1550627306',
‘AutoCompanyUser':'bDA5bkhxUk9MR2*********wQzZpTHZ2UkVUQm9WdXExNGhZeVhEOFdVNnpiMkZDWlJXSVZNUHhLYnZsWUpkRzNLUVhsVWwrdHpldHhxM3pkdkl3N3NSK1FDcmphcGFwRWN3aFlRd21aUGRIVmo4OW5IcjUvV1NXKzhCQzhaeHI3M1dXU0NCK1hBRXh6YkorUmtCL2ZqdGFUQ3NPNklHUVFXcjBiYU9mS2l5MHA2WGNOS2s3T0ZiczdJREdt',
'_gat_gtag_UA_113940482_1':'1'}
header={'User-Agent':'Mo*******************, like Gecko) Chrome/63.**************ari/537.36',
'Host':'car.xiaojukeji.com',
'Referer':'https://***********/',
'X-Auto-Company-ID':'8267',
'X-Requested-With':'X*******'}
payload={'orderStateGroup':4,
'current':page,
'businessLine':1,
'wsgsig':'*************************SyBBDsbUawosMAdN57G9CuJ/U9Pnx1cNLQBE************69f4LQCaq',
'from':'webapp'}
r1=requests.get(url1,params=payload,headers=header,cookies=cookie,).json()
list1 = r1['data'][0]['pagination']['items'] #选择数据所在的数据块
carinfo = ['orderId','carNo','carVariantName','stateName','userName','userPhone','term','monthlyPayment','deposit']
for i in range(len(list1)): #遍历list1
for j in range(len(carinfo)): #遍历carinfo
sheet.write(m,n,list1[i][j]) #写入表格
n+=1
n=0
m+=1
page=page+1 #翻页
wbk.save(r'd:\test2.xls')
print('ok')
爬取的结果如图:
爬取结果
参考:
http://www.cnblogs.com/lei0213/p/6957508.html
requests学习
https://blog.csdn.net/wangkai_123456/article/details/50457284
xlwt学习