记得刚从事这个行业的时候就是不停的去查排名,然后调整价格非常枯燥乏味,当时多想有一款百度竞价数据采集,查询竞价创意与排名工具。
后期永久更新在:
2020年6月6日更新
针对百度页面的调整,修复部分错误
2020年4月15日更新
针对百度页面的调整,修复部分错误
2019年12月15日更新
1、添加地域设置功能,可定义省份或省份-市,空格分开例如湖北 武汉。
2、优化百度竞价数据采集速度,更快完成任务。
3、添加gui,操作简单一目了然。
扫描文章底部二维码加微信,100红包。
背景
常言道知己知彼百战百胜,SEM我们需要了解推广行业的竞争情况、主要竞品是谁,整个行业中我们自己的竞价推广处于什么水平。小到日常账户操作,更是要知道我们自己的关键词排名情况,哪些需要提价、哪些出价偏高。不能总是自我感觉良好,关键词都能进前三、创意符合大众需求。
尝试
既然要采集百度推广的相关数据,有两条路可以走,一是直接采集百度搜索关键词后的搜索结果页面,再就是采集推广实况的页面。我这里选这里后者更加客观公正,推广实况为您显示网民看到的平均结果,可能与您在百度搜索框直接搜索结果有差别, 实际结果会受地域/网络环境/机型等用户的个性化因素影响产生差异。
首先想到的就是百度自己的接口,然后就是python,不得已还有火车头和八爪鱼这些采集工具。这些坑开水都一一踩过,在这里记录分享一下。
百度接口:百度确实有推广实况的api接口http://sem.baidubce.com/v1/cloud/PreviewService/getPreview,返回数据是整个搜索结果页面的html。这里没有详细看文档,上来就开始码代码,最后也没有获取到数据,因为“搜索推广实况API仅允许KA客户、代理商申请普通权限,非KA客户请前往Web版百度推广使用推广实况相关功能”,并没有ka和代理商的权限,就算有也不能广泛的使用,此路不通。
不行就在在web端抓取api接口https://fengchao.baidu.com/hairuo/request.ajax?path=vane%2FGET%2FPromotionLiveService%2FprocessHumanRequest&reqid=REQID,REQID值不知道在哪里获取,获取还有其他问题,因为官方给的接口需要那么大的权限,所以这个接口 感觉也走不通,就没有继续折腾。
采集工具:火车头浏览器、八爪鱼采集器,这些工具操作简单,基本可以满足采集到想要的百度竞价数据,但是有个致命的问题就是免费版卡,卡了就慢,然后对比python灵活性不够。也勉强可以用,脚本都到位了,有需要的可以找我留邮箱。
python+selenium:由于没有找到可以利用的接口,所以采用selenium控制浏览器来模拟真实操作采集百度竞价数据,查询竞价创意与排名,目前的工具就是用这套方案实施下来的。
踩坑记录
1、selenium + ChromeDriver内存溢出奔溃
查询300个词左右会崩溃,无头、各种设置、清缓存的办法都没用。
解决办法是初次登陆后保存cookies,执行200次查询后关闭浏览器,然后重新打开读取cookies免登陆,虽然有损效率但是相对稳定。
2、selenium切换到iframe
百度推广实况的结果在iframe中,不可以直接提取内容。
#切换到iframe(id、name) driver.switch_to_frame('adpreview-frame') #无id,无name,先定位iframe元素 iframe = driver.find_elements_by_tag_name("iframe")[0] driver.switch_to.frame(iframe) #切到frame中之后,我们便不能继续操作主文档的元素,这时如果想操作主文档内容,则需切回主文档 driver.switch_to.default_content()
3、selenium + ChromeDriver清空输入
模拟ctrl+a delete靠谱
search=driver.find_element_by_xpath("//*[@id=\"root\"]/div/div[2]/div[2]/div[2]/div/div/div[1]/input") search.send_keys(Keys.CONTROL, 'a') search.send_keys(Keys.DELETE)
4、headless模式手动输入验证码
headless模式下试了几个方案不能很好的提取出验证码。最后保存整个页面截图,然后手动输入。
driver.get_screenshot_as_file('code.png') user_code = input("验证码:").strip() driver.find_element_by_xpath("//*[@id=\"uc-common-token\"]").send_keys(user_code)
进一步需要try是否有错误提示,有的话需要重新保存截图然后输入。
5、selenium + ChromeDriver保存cookies和使用cookies登录
#保存cookies def getCookie(): tbCookies = driver.get_cookies() cookies = {} for item in tbCookies: cookies[item['name']] = item['value'] outputPath = open('Cookies.pickle','wb') pickle.dump(cookies,outputPath) outputPath.close() return cookies #读取cookies def readCookies(): if os.path.exists('Cookies.pickle'): readPath = open('Cookies.pickle','rb') bdCookies = pickle.load(readPath) else: bdCookies = getCookie() return bdCookies
使用教程
1、首先需要下载ChromeDriver安装,根据自己chrome的版本去下载对应的ChromeDriver。
下载地址:https://chromedriver.chromium.org/
国内下载:http://npm.taobao.org/mirrors/chromedriver/
解压压缩包,找到chromedriver.exe复制到chrome的安装目录(其实也可以随便放一个文件夹)。
2、注册百度推广小号,就是自己测试新功能,没充钱的百度推广账户,需要用到账户、密码、绑定手机号。
注册地址:http://u.baidu.com/ucweb/?module=Reguser&controller=reg&action=index&appid=3#/register
3、关键词保存为ks.txt,与百度竞价数据采集,查询竞价创意与排名工具统一目录,每行一个关键词。为了提高结果的准确性,我们需要尽可能搜集行业的全部关键词。
4、执行文件后会生成Cookies.pickle(cookies),code.png(验证码),info.csv(采集结果)。
结果利用
百度竞价数据采集,查询竞价创意与排名数据利用以后慢慢说,大致就是要解决开头提到的痛点。我们的广告投放在行业中处于什么水平?展现占比第几?平均排名多少?最大的竞争对手是哪些,都采用什么投放策略?后期需要如何调整账户?
工具下载:百度竞价数据采集,查询竞价创意与排名工具,包使用有需要的加微信红包即可,大家的时间都很宝贵。
好工具啊,还可以用吗
@爱比宝 可以用啊
这个工具对推广人员来说很有吸引力啊
这里太强大了,必须顶!!
文章不错非常喜欢
文章不错非常喜欢交个朋友
是真的吗
@大哥哥 绝对保真
准确实时,200永久,实在良心啊
SEM竞价以微信裂变必备神器