吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 37993|回复: 251
收起左侧

[Python 转载] 【已更新关键词挖掘采集工具】seo必备工具,python采集关键词挖掘数据

     关闭 [复制链接]
huguo002 发表于 2019-7-4 18:51
本帖最后由 huguo002 于 2019-7-5 12:26 编辑

【关键词采集工具】seo必备工具,python采集关键词挖掘数据
【关键词采集工具】seo必备工具,python采集关键词挖掘数据

采集数据来源于站长之家!

需要输入关键词!

引用的库

import requests
from lxml import etree
import re
import xlwt
import time


例子:
1.etree采集列表
2.切片操作
3.保存excel格式

[Asm] 纯文本查看 复制代码
#站长工具关键词挖掘
# -*- coding=utf-8 -*-

import requests
from lxml import etree
import re
import xlwt
import time


headers={
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.55.3 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10'
}


#查询关键词是否能找到相关的关键字
def search_keyword(keyword):
    data={
        'kw': keyword,
        'page': '1',
        'by': '0',
    }
    url="http://stool.chinaz.com/baidu/words.aspx"
    html=requests.post(url,data=data,headers=headers).text
    time.sleep(3)
    #print(html)
    con=etree.HTML(html)
    key_result=con.xpath('//div[@class="col-red lh30 fz14 tc"]/text()')
    try:
        key_result=key_result[0] #没有找到相关的关键字
    except:
        key_result=[]
    #print(key_result)
    return key_result



#获取关键词页码数和记录条数
def get_page_number(keyword):
    data = {
        'kw': keyword,
        'page': '1',
        'by': '0',
    }
    url = "http://stool.chinaz.com/baidu/words.aspx"
    html = requests.post(url, data=data, headers=headers).text
    time.sleep(3)
    # print(html)
    con = etree.HTML(html)
    page_num = con.xpath('//span[@class="col-gray02"]/text()')
    page_numberze = r'共(.+?)页'
    page_number = re.findall(page_numberze, page_num[0], re.S)
    page_number = page_number[0]
    #print(page_number)
    total_data = con.xpath('//p[@class="col-gray lh24 fr pr5"]')  # 数据记录
    total_datas = total_data[0].xpath('string(.)')  # 获取节点所有文本
    #print(total_datas)
    print(f'挖掘关键词:{keyword}-{total_datas}')
    return page_number


#获取关键词数据
def get_keyword_datas(keyword,page_number):
    datas_list = []
    for i in range(1,page_number+1):
        print(f'正在采集第{i}页关键词挖掘数据...')
        data = {
            'kw': keyword,
            'page': i,
            'by': '0',
        }
        #print(data)
        url = "http://stool.chinaz.com/baidu/words.aspx"
        html = requests.post(url, data=data, headers=headers).text
        time.sleep(3)
        #print(html)
        con = etree.HTML(html)
        key_words = con.xpath('//p[@class="midImg"]/a/span/text()')  # 关键词
        #print(key_words)
        keyword_all_datas = []
        keyword_datas = con.xpath('//ul[@class="ResultListWrap "]/li/div[@class="w8-0"]/a')
        for keyword_data in keyword_datas:
            keyword_data = keyword_data.text
            if keyword_data != None:
                keyword_all_datas.append(keyword_data)
        #print(keyword_all_datas)
        overall_indexs = keyword_all_datas[0::5]  # 整体指数
        #print(overall_indexs )
        pc_indexs = keyword_all_datas[1::5]  # pc指数
        #print(pc_indexs)
        mobile_indexs = keyword_all_datas[2::5]  # 移动指数
        #print(mobile_indexs)
        s360_indexs = keyword_all_datas[3::5]  # 360指数
        #print(s360_indexs)
        collections = keyword_all_datas[4::5]  # 收录量
        #print(collections)
        ips = con.xpath('//ul[@class="ResultListWrap "]/li/div[@class="w15-0 kwtop"]/text()') # 预估流量
        if ips==[]:
            ips =['--']
        #print(ips)
        first_place_hrefs = con.xpath(
            '//ul[@class="ResultListWrap "]/li/div[@class="w18-0 lh24 tl"]/a/text()')  # 首页位置链接
        if first_place_hrefs==[]:
            first_place_hrefs=con.xpath('//ul[@class="ResultListWrap "]/li/div[@class="w18-0 lh24 tl"]/text()')
        #print(first_place_hrefs)
        first_place_titles = con.xpath(
            '//ul[@class="ResultListWrap "]/li/div[@class="w18-0 lh24 tl"]/p[@class="lh17 pb5"]/text()')  # 首页位置标题
        if first_place_titles == []:
            first_place_titles=['--']
        #print(first_place_titles)
        data_list = []
        for key_word, overall_index, pc_index, mobile_index, s360_index, collection, ip, first_place_href, first_place_title in zip(
                key_words, overall_indexs, pc_indexs, mobile_indexs, s360_indexs, collections, ips, first_place_hrefs,
                first_place_titles
        ):
            data = [
                key_word,
                overall_index,
                pc_index,
                mobile_index,
                s360_index,
                collection,
                ip,
                first_place_href,
                first_place_title,
            ]
            print(data)
            print('\n')
            data_list.append(data)
            time.sleep(3)
        datas_list.extend(data_list) #合并关键词数据
    return datas_list


#保存关键词数据为excel格式
def bcsj(keyword,data):
    workbook = xlwt.Workbook(encoding='utf-8')
    booksheet = workbook.add_sheet('Sheet 1', cell_overwrite_ok=True)
    title = [['关键词', '整体指数', 'PC指数', '移动指数', '360指数', '预估流量(ip)', '收录量', '网站首位链接', '网站首位标题']]
    title.extend(data)
    #print(title)
    for i, row in enumerate(title):
        for j, col in enumerate(row):
            booksheet.write(i, j, col)
    workbook.save(f'{keyword}.xls')
    print(f"保存关键词数据为 {keyword}.xls 成功!")


if __name__ == '__main__':
    keyword = input('请输入关键词>>')
    print('正在查询,请稍后...')
    result=search_keyword(keyword)
    if result=="没有找到相关的关键字":
        print('\n')
        print (result)
        print("该关键词没有挖掘到关键词数据")
    else:
        print('\n')
        page_number=get_page_number(keyword)
        print('\n')
        print('正在采集关键词挖掘数据,请稍后...')
        print('\n')
        page_number=int(page_number)
        datas_list=get_keyword_datas(keyword,page_number)
        print('\n')
        print('关键词挖掘数据采集结果:')
        print('========================采集结果========================\n\n')
        for datas in datas_list:
            print(datas)
        print('\n\n========================采集结束========================\n')
        bcsj(keyword, datas_list)








cai.gif
seo.gif
seo数据.jpg


发帖不易,有帮助的话,麻烦贵手给个热心,给个赞!
有问题欢迎交流!


需要的人多的话 或者不会py 可留言我 打包exe !
欢迎交流分享!


感谢老哥的指点!@时空之外


2019.7.5 更新exe!
exe运行环境  win7 64位系统!
exe地址:
链接: https://pan.baidu.com/s/19M6d6Wh5GbOtqjFgu4IK5w 提取码: dinw
7天有效!

大家看着玩吧!


有部分无指数的数据丢失,会少一点数据,还是与取值有关,将就着用吧!
本渣渣只会简单打包,暂时不会pyqt!!
so


使用方法:
第一步:解压,打开,txt,添加关键词
第一,添加关键词.gif

第二步:运行exe
第二步:打开exe程序,运行.gif

第三步:等待,完成!


没有关键词或者search_keyword.txt可以手动输入查询!

search_keyword.txt是查询关键词列表,一行一个
no_search_keyword是没有挖掘到词的列表


发帖不易,有帮助的话,麻烦贵手给个热心,给个赞!
有问题欢迎交流!


最后:完成效果.gif
最后:完成效果.gif
最后:完成效果.gif

免费评分

参与人数 39吾爱币 +34 热心值 +36 收起 理由
海水001 + 1 + 1 热心回复!
beijing999923 + 1 + 1 我很赞同!
yishujia0011 + 1 + 1 我很赞同!
AItontongya + 1 我很赞同!
yjn866y + 1 + 1 我很赞同!
曾经的大海 + 1 + 1 老哥发一份呗,
yyyuuu + 1 + 1 我很赞同!
csw23164535 + 1 + 1 吾爱就是人才多啊!
skyfire1945 + 2 + 1 我很赞同!
zqhyou + 1 + 1 我很赞同!
嘟鲁鲁 + 1 + 1 6666大神
aftss + 1 谢谢@Thanks!
keiki + 1 + 1 我很赞同!
Flytom + 1 + 1 热心回复!
爱学习的Cary + 1 + 1 鼓励转贴优秀软件安全工具和文档!
yike911 + 1 + 1 我很赞同!
fengzisoho + 1 + 1 谢谢@Thanks!
etion + 1 我很赞同!
whq + 1 谢谢@Thanks!
IMRE + 1 + 1 用心讨论,共获提升!
bubniki + 1 我很赞同!
yahoobrother + 1 + 1 用心讨论,共获提升!
iversonsy + 1 + 1 热心回复!
红尘烟雨 + 1 + 1 谢谢@Thanks!
taobaogd + 1 谢谢@Thanks!
求你于无期 + 1 + 1 谢谢@Thanks!
18538213018 + 1 + 1 谢谢@Thanks!
16685113112 + 1 我很赞同!
1830521742 + 1 + 1 我很赞同!
小小书生 + 1 谢谢@Thanks!
童子tz + 1 Python就是快捷
duffy86 + 1 + 1 谢谢@Thanks!
yanhua501511 + 1 + 1 真的很有用~!!!
hongxw + 1 热心回复!
微微笑95 + 1 我很赞同!
时空之外 + 1 + 1 老哥稳~
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
hudongliang + 1 + 1 谢谢@Thanks!
风中333 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| huguo002 发表于 2019-7-4 18:54
需要exe的话可以留言我!要的人多我再分享!
caisege 发表于 2020-5-26 03:37
Traceback (most recent call last):
  File "seo_tools.py", line 159, in <module>
    page_number=get_page_number(keyword)
  File "seo_tools.py", line 52, in get_page_number
    page_number = re.findall(page_numberze, page_num[0], re.S)
IndexError: list index out of range


python环境问题?
xieyong 发表于 2020-3-14 21:07
需要exe的话可以留言我!要的人多我再分享!Traceback (most recent call last):

&#160;&#160;File "D:/python/untitled/123.py", line 157, in <module>

&#160; &#160; page_number = get_page_number(keyword)

&#160;&#160;File "D:/python/untitled/123.py", line 50, in get_page_number

&#160; &#160; page_number = re.findall(page_numberze, page_num[0], re.S)

IndexError: list index out of range



楼主,源码里报这个错误怎么解决呢?
laowang99 发表于 2019-7-4 19:07
需要exe  
 楼主| huguo002 发表于 2019-7-4 19:13

稍后补给老哥
几分从前 发表于 2019-7-4 19:32
需要EXE
营养糊糊 发表于 2019-7-4 19:34
学习了,技术贴得支持
大帝的春天 发表于 2019-7-4 19:35

需要EXE
shuawang 发表于 2019-7-4 19:52
需要输入关键词!~~~~~~
风中333 发表于 2019-7-4 19:52
需要EXE
戴鹏1314 发表于 2019-7-4 19:53
需要exe邮箱5124042@qq.com谢谢老哥
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 18:06

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表