百度竞价排名小工具

本文最后更新于 2024年4月9日 下午

众所周知百度盈利的一个很重要的途径是广告的竞价排名

商家想要向受众推销自己的产品,可以借助百度这样一个平台,但百度的竞价排名并不是一成不变的,商家想要实时观察百度对自己产品的推广情况,我作为爬虫技术的入门者,课外时间和自己的同学开发了这样的一个小工具。

该工具借助python的requests库以及lxml解析库实现主要功能,通过tkinter库实现图像界面,threading库实现多线程。同时显示多条排名。其余还有json库用于处理网页信息。

首先确定我们需要的信息:投放广告公司的名称和网址。

公司名称隐含在V3的标签里

然后使用浏览器F12的开发者工具,定位元素的HTML代码。

但尝试了几次后发现,元素的class似乎是一个随机的字符串,每次刷新后,class都会发生改变。

但山重水复疑无路柳岸花明又一广告,通过定位每条广告右下角浅蓝色的小广告,发现虽然这个元素的class每次也都不同, 但是他们有一个特点:font标签的class属性不管前半部分是什么字符,后半部分都为:ec_tuiguang_container,于是便对边标签class属性进行模糊匹配。

定位到广告后,取font标签的父母标签,再从其下定位到a标签的第一个span标签的text()属性。

以下是主要功能的源代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import requests
from json import loads
from lxml import etree
import re
class rank:
def _init_(self):
return
def search_web(self,keyword):
try:
headers = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36"}

url=("https://www.baidu.com/s?ie=UTF-8&wd=%s"%(keyword))#网址

html=requests.get(url,headers=headers , timeout=(3,7)).text

s = requests.session()
s.keep_alive =False#防止源代码过长,超时导致SSL错误

htmls=etree.HTML(html)

fonts=htmls.xpath("//*[contains(@class,'ec_tuiguang_container')]/parent::*/span/a/@data-renzheng")#定位
website=htmls.xpath("//*[contains(@class,'ec_tuiguang_container')]/parent::*/a/span[1]/text()")
self.title=[] #公司名字
self.web=[] #公司网址
for i in website:
self.web.append(i)
for i in fonts:
self.title.append(loads(i)['title'])
except:
self.title=[]
self.web=[]


百度竞价排名小工具
https://siegelion.cn/2019/09/14/百度竞价排名小工具😜/
作者
siegelion
发布于
2019年9月14日
许可协议