python百度关键词相关搜索词采集,链轮查询采集exe工具

2020-07-22 11:33:21 浏览数 (1)

什么是百度相关搜索?

在百度搜索结果页面底部通常有9个相关词,其他搜索引擎同样也都有相关搜索,只是显示个数稍微有些不同,例如,我们搜索什么是SEO,新手如何学SEO等词组,目的就是为了方便用户对该词的其他信息进行拓展了解。

百度相关搜索形成原理

用户搜索词和其他搜索词出现相关的,或有很多人是直接搜索与这个词相关的其他短语,如果搜索的人多,可以解释的内容用户句话说从侧面也有很强的需求。因此,为了满足更多用户的需求,提高用户体验,百度搜索这个词的数据显示用户和搜索次数最多的词数据相关和最底部的相关搜索,方便用户找到自己。

如何使用相关的搜索推广

1、这其实就是,将自己的关键词 品牌词做相关搜索就可以了,可以提高自己网站的知名度和曝光率,长时间也可以带来很多流量。

2、实践是非常简单的,每天自己的搜索关键字时,搜索和添加自己的品牌的话,但几个IP显然是不够的,这需要一些IP点击软件的使用,或找到一个第三方支付刷。

提示:如果自己的服务和产品不好,即使这些相关的搜索做了一点,意义也不是很大,如果产品和服务失败了那就很难了。不建议用黑帽做这些东西,会让搜索引擎反感。

版本一

1.随机生成协议头

2.关键词相关筛选

3.关键词去重

4.链轮采集

5.插入本地数据库

代码语言:javascript复制
#百度关键词相关搜索采集
#20191118
# -*- coding: UTF-8 -*-

import requests,re,time
from fake_useragent import UserAgent
from bs4 import BeautifulSoup
import pymysql

#获取当前时间
#打印出当前的年月日时分秒
#print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
#打印出当前的年月日
#print(time.strftime('%Y-%m-%d',time.localtime(time.time())))
def get_time():
    timedata=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
    return timedata

#随机生成协议头
def ua():
    ua=UserAgent()
    headers = {"User-Agent": ua.random}
    return headers

#筛选词初始设定
req="工业|产品|外观|结构|造型|手机|犀牛|rhino|proe"

#链接数据库
connect=pymysql.connect(
            host="localhost",
            user="root",
            password="123456",
            db="xiaoshuo",
            port=3306,
        )
cursor=connect.cursor() #设置游标

#筛选关键词
def search(req,con,n):
    text=re.search(req,con)
    if text:
        data=text.group(n)
    else:
        data='no'
    return data

#获取相关关键词源码
def get_a(key):
    response = requests.get(f"https://www.baidu.com/s?ie=utf-8&tn=baidu&wd={key}", headers=ua(), timeout=5).text
    time.sleep(2)
    soup = BeautifulSoup(response, 'lxml')
    div = soup.find('div', id='rs').find_all('a')
    return div


#相关关键词链轮查询采集
def get_keywords(keywords):
    xg_keywords=keywords

    all_keywords=[]
    for key_word in keywords:
        print(">>>开始查询 %s 相关关键词!" % key_word)
        try:
            div=get_a(key_word)
        except Exception as e:
            print(f'错误代码:{e}')
            print(f'正在重新获取网页内容...')
            time.sleep(5)
            div = get_a(key_word)

        for a in div:
            keyword=a.get_text()
            print(keyword)

            #筛选
            if search(r'(%s)'%req,keyword,1) =='no':
                print(f'-剔除关键词 {keyword}')
            else:
                print(f'>>获取关键词 {keyword}')

                print(xg_keywords)
                #去重
                if keyword not in xg_keywords:

                    #插入数据库
                    cursor.execute('insert into keywords(key_word,keyword,timedata)VALUES("{}","{}","{}")'.format(key_word,keyword,get_time()))
                    connect.commit()

                    xg_keywords.append(keyword)
                    all_keywords.append(keyword)

    #链轮
    get_keywords(all_keywords)

    #关闭数据库
    cursor.close()
    connect.close()



if __name__ == '__main__':
    get_keywords(["工业设计培训"])

代码参考来源:流量贩子 《seo应用编程》

版本二

百度相关搜索关键词抓取

1.读取txt文档关键词

2.导出txt关键词

3.多线程采集关键词

代码语言:javascript复制
# 百度相关搜索关键词抓取,读取txt关键词,导出txt关键词
# -*- coding=utf-8 -*-
import requests
import re
import time,random
from multiprocessing.dummy import Pool as ThreadPool
from fake_useragent import UserAgent
# 百度相关关键词查询
def xgss(url):
    sjs = random.randint(111111, 999999)
    print(sjs)
    sj=str(sjs)
    ua=UserAgent()
    headers = {
        'Cookie': 'BIDUPSID=A484BA501E92BE1CA6537C00F7155E36; PSTM=1558489515; BAIDUID=75912F7E3DD9AB678D8B98EEE8D263DE:FG=1; BD_UPN=12314353; H_PS_PSSID=; H_PS_645EC=a0f4GSgzx44WxF1PZV01LZFmAyUbaDsJJ882KRllgCkTAGrK0tV0eXNoXakEyZNGUxuz5Xgf2qs; BDORZ=FFFB88E999055A3F8A630C64834BD6D0; COOKIE_SESSION=341509_0_9_6_5_45_0_3_9_7_1_41_0_0_0_0_1564971440_0_1578376068|9#0_0_1578376068|1; delPer=0; BD_CK_SAM=1; PSINO=6; BDSVRTM=526',
        'Referer': 'https://www.baidu.com/?tn=4%s1_6_hao_pg' % sj,
        "User-Agent":ua.random
        #"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
    }
    html = requests.get(url, headers=headers).content.decode('utf-8')
    time.sleep(2)
    #print(html)
    ze = r'<div id="rs"><div class="tt">相关搜索</div><table cellpadding="0">(. ?)</table></div>'
    xgss = re.findall(ze, html, re.S)
    # print(xgss)
    xgze = r'<th><a href="(. ?)">(. ?)</a></th>'
    sj = re.findall(xgze, str(xgss), re.S)
    # print(sj)
    gjc = ''
    for x in sj:
        print(x[1])
        gjc = gjc   x[1]   'n'

    # 导出关键词为txt文本
    with open(".gjcsj.txt", 'a', encoding='utf-8') as f:
        f.write(gjc)
    print("-----------------------------------")
    return gjc

print('n========================工具说明========================')
print('百度相关关键词挖掘采集工具-by huguo002n')
print('1.gjc.txt 为搜索词来源文件,关键词一行一个,最后一个关键词后须换行;')
print('2.gjcsj.txt 为输出关键词保存文档;')
print('注意,大批量采集使用容易和谐!n')
print('================= BUG 反馈微信:huguo00289 ============n')
time.sleep(5)
print("程序运行,正在导入关键词列表!!!")
print("-----------------------------------")

# 导入要搜索的关键词txt列表
urls = []
data = []
for line in open('.gjc.txt', "r", encoding='utf-8'):
    if line !='n':
        data.append(line)
print("导入关键词列表成功!")
print("-----------------------------------")

# 转换关键词为搜索链接
for keyword in data:
    url = 'https://www.baidu.com/s?wd='   keyword
    urls.append(url)

print("采集百度相关搜索关键词开启!")
print("...................")
# 多线程获取相关关键词
try:
    # 开4个 worker,没有参数时默认是 cpu 的核心数
    pool = ThreadPool()
    results = pool.map(xgss, urls)
    pool.close()
    pool.join()
    print("采集百度相关搜索关键词完成,已保存于gjcsj.txt!")
except:
    print("Error: unable to start thread")

print("8s后程序自动关闭!!!")
time.sleep(8)

exe下载地址:

百度云

链接:

https://pan.baidu.com/s/1RhmZ99dYCSIJsEe-SnlhXQ

提取码:

9sjs

0 人点赞