记得刚从事这个行业的时候就是不停的去查排名,然后调整价格非常枯燥乏味,当时多想有一款百度竞价数据采集,查询竞价创意与排名工具。

后期永久更新在:

竞价创意批量采集工具,竞价排名监控软件

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(采集结果)。

结果利用

百度竞价数据采集,查询竞价创意与排名数据利用以后慢慢说,大致就是要解决开头提到的痛点。我们的广告投放在行业中处于什么水平?展现占比第几?平均排名多少?最大的竞争对手是哪些,都采用什么投放策略?后期需要如何调整账户?

工具下载:百度竞价数据采集,查询竞价创意与排名工具,包使用有需要的加微信红包即可,大家的时间都很宝贵。

百度竞价数据采集,查询竞价创意与排名工具-开水网络