2019年的第一篇博客,恩,好久没写过博客了,恩,忘了,哈哈,实在是太懒了

今天写一个爬取百度推广数据的爬虫,当然我写的肯定不是那么的完美,但是能用,大哭

注意:有的时候,get或post方法获取数据是会报ssl等错误,网站要验证啥的,没搞懂,网上搜索,都是设置 verify=False,我也懒得去详细分析,你们要是有兴趣可以去了解一下,然后这么设置了,在GET或者post是会有warning提示,编写代码:

# 禁用ssl发出的警告
requests.packages.urllib3.disable_warnings() 下面代码:
def main():
  #开启一个session对话

main_session = requests.session()
return main_session def get_cost_info(main_session, endtime, flag1, flag2):
  #获取省或市在日期或者月份下的消费信息

if flag1 == 'province':
splitDimension = "provinceName"
else:
splitDimension = "provinceCityName"
if flag2 == 'month':
unitOfTime = 3
else:
unitOfTime = 5
headers = {
'Accept':'application/json',
'Accept-Encoding':'gzip, deflate',
'Accept-Language':'zh-CN,zh;q=0.8',
'Connection':'keep-alive',
'Content-Length':'763',
'Content-Type':'application/x-www-form-urlencoded',
'Cookie':setting.Cookie,
'DNT':'1',
'Host':'fengchao.baidu.com',
'Origin':'https://fengchao.baidu.com',
'Referer':'https://fengchao.baidu.com/fc/report/dashboard/user/%s/account'%setting.userid,
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 BIDUBrowser/8.7 Safari/537.36',
'X-DevTools-Emulate-Network-Conditions-Client-Id':'87F3C66D-3166-46F6-8B46-141057354EBC'
}
params = {
"userId":setting.userid,
"ids":[setting.userid],
"idType":2,
"splitDimension":splitDimension,
"limit":[0,1000],
"sortRules":[],
"levelOfDetails":211,
"startDate":"2019-01-01",
"endDate":endtime,
"predicateConditions":[],
"unitOfTime":unitOfTime,
"columns":["userId","date","accountName","impression","click","cost","cpc","ctr","conversion","phoneConversion","bridgeConversion"]
}
formdata = {
'reqid': setting.reqid,
'eventId': setting.eventId,
'userid': setting.userid,
'token': setting.token,
'path': 'mars/GET/AccountReportDataService/getAccountDataCenterReportData',
'params': json.dumps(params)
}
  #url是去F12---network获取的

url_1 = 'https://fengchao.baidu.com/hairuo/request.ajax?path=mars/GET/AccountReportDataService/getAccountDataCenterReportData&reqid=%s' % formdata['reqid']
cont_1 = main_session.post(url_1, headers=headers, data=formdata, verify=False)
datas = cont_1.json()
cont_list_1 = datas['data']['ACCOUNT']['rows']
for i in cont_list_1:
cont_list_2 = i['subRows']
cont_list = []
for j in cont_list_2:
if flag2 == 'month':
time_1 = j['date'][0:7]
time_list1 = time_1.split('-')
date = '%s年%s月份' % (time_list1[0], str(int(time_list1[1])))
else:
date = j['date']
zhanghu = j['accountName']
province, city = '', ''
if flag1 == 'province':
province = j['provinceName']
else:
city_list = j['provinceCityName'].split('-')
province, city = city_list[0], city_list[1]
zhanxian = str(j['impression'])
dianji = str(j['click'])
xiaofei = str(j['cost'])
pinjunjiage = str('%.2f' % (j['cpc']))
dianjilv = str('{:.2%}'.format(j['ctr']))
wangyezhuanhua = str(j['conversion'])
dianhuazhuanhua = str(j['phoneConversion'])
shangqiaozhuanhua = str(j['bridgeConversion'])
cont_list.append([date, zhanghu, province, zhanxian, dianji, xiaofei, pinjunjiage, dianjilv, wangyezhuanhua, dianhuazhuanhua, shangqiaozhuanhua])

经过测试,cookie一般能保持7天不过期,七天之后就要重新登录浏览器F12获取

requests 获取百度推广信息的更多相关文章

  1. ionic基于GPS定位并通过百度地图获取定位详细信息

    相信所有的前端攻城狮都会碰到移动端App.里面获取用户定位信息. 那么问题来了,怎么获取用户的定位信息(经纬度)呢. 当然方法有很多,通过百度地图API 以及 高德地图 API都是可以的.但是两个获取 ...

  2. python3爬虫-通过requests获取安居客房屋信息

    import requests from fake_useragent import UserAgent from lxml import etree from http import cookiej ...

  3. Python获取百度浏览记录

    Python模拟百度登录实例详解 http://www.jb51.net/article/78406.htm Python实战计划学习作业2-1 http://blog.csdn.net/python ...

  4. [Python爬虫] Selenium+Phantomjs动态获取CSDN下载资源信息和评论

    前面几篇文章介绍了Selenium.PhantomJS的基础知识及安装过程,这篇文章是一篇应用.通过Selenium调用Phantomjs获取CSDN下载资源的信息,最重要的是动态获取资源的评论,它是 ...

  5. 【ASP.NET 进阶】获取MP3文件信息并显示专辑图片

    突发奇想,想弄个显示MP3文件信息和专辑图片的小Demo,个人不是大牛,遂百度之,总算搞定,现分享如下. 效果图: GIF效果图: 主要是依靠2个DLL文件:ID3.dll 和 Interop.She ...

  6. 在Android Studio中使用BaiduMap SDK实时获取当地位置信息

    配置BaiduMap 环境 1.在百度API中新建自己的一个APP包名和APP名需要注意和自己Android Studio 中的包名和APP名保持一致: 2.百度地图中还需要填写一个SHA1 数字签名 ...

  7. 获取百度地图POI数据三(模拟关键词搜索)

    上一篇博文中讲到如何获取用于搜索的关键词,并且已经准备好了一百五十万的关键词   这其中有门牌号码,餐馆酒店名称,公司名称,道路名称等.有了这些数据,我们就可以通过代码,模拟我们在百度地图的搜索框中搜 ...

  8. 获取百度地图POI数据二(准备搜索关键词)

    上篇讲到  想要获取尽可能多的POI数据 需要准备尽可能多的搜索关键字   那么这些关键字如何得来呢?   本人使用的方法是通过一些网站来获取这些关键词   http://poi.mapbar.com ...

  9. requests获取所有状态码

    requests获取所有状态码 requests默认是不会获取301/302的状态码的.可以设置allow_redirects=False,这样就可以获取所有的状态码了 import requests ...

随机推荐

  1. 用python一步一步教你玩微信小程序【跳一跳】

    12月28日,微信上线了小游戏「跳一跳」,瞬间成了全民游戏,如何牢牢占据排行榜的第一位呢?用Python帮助你,Python真的无所不能. 作为技术出身的我们,是不是想用技术改变排名呢? 注意:本文适 ...

  2. [NewLife.XCode]高级增删改

    NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netstandard,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示 ...

  3. Python3虚拟环境--venv

    Python3.3以上的版本通过venv模块原生支持虚拟环境,可以代替之前的virtualenv. 该venv模块提供了创建轻量级“虚拟环境”,提供与系统Python的隔离支持.每一个虚拟环境都有其自 ...

  4. Java笔记(二十) 注解

    注解 一.内置注解 Java内置了一些常用注解: 1.@Override 该注解修饰一个方法,表示当前类重写了父类的该方法. 2.@Deprecated  该注解可以修饰类.方法.字段.参数等.表示对 ...

  5. 06-Python入门学习-元组、字典、集合类型

    一.元组 一:基本使用:tuple 1 用途: 记录多个值,当多个值没有改的需求,此时用元组更合适 2 定义方式: 在()内用逗号分隔开多个任意类型的值 t=(1,1.3,'xx',('a','b') ...

  6. css 颜色表示法

    css颜色值主要有三种表示方法: (1)颜色名表示,如:red红色,gold金色 (2)rgb表示,如:rgb(255,0,0)表示红色 (3)16进制数值表示,如:#ff0000表示红色,这种可以简 ...

  7. Docker ElK安装部署使用教程

    一.简介 1.核心组成 ELK由Elasticsearch.Logstash和Kibana三部分组件组成: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引 ...

  8. 取消Fragment切换时间,Fragment+ViewPager静止滑动,去掉默认的滑动效果

    import android.content.Context; import android.support.v4.view.ViewPager; import android.util.Attrib ...

  9. 滴滴出行基于RocketMQ构建企业级消息队列服务的实践

    小结: 1. https://mp.weixin.qq.com/s/v6NM3UgX-qTI7yO1QPCJrw 滴滴出行基于RocketMQ构建企业级消息队列服务的实践 原创: 江海挺 阿里巴巴中间 ...

  10. css3工具

    随着CSS3的出现,CSS3讨论的话题越来越多了,现在各种教程也是多如牛毛,不比一年前的时候,找个资料要捞遍整个互联网,而且还很难找到自己需要的参考资料.从侧面也说明,CSS3对于前端工程师来说,越来 ...