多线程导出excel_seo必备网站分析工具,关键词百度搜索结果查询导出源码

news/2024/5/21 1:16:07/文章来源:https://blog.csdn.net/weixin_39929646/article/details/111233145

seo必备网站分析工具,关键词百度搜索结果查询导出源码

两个简单的版本,关于百度搜索结果的采集抓取,可以获取到竞争对手的网站,加以分析和研究,只需输入关键词和搜索页码,即可完成对于竞争对手的获取和研究,给出两个版本,希望可以起到参考和帮助!

9f93de4cd47e81b38af7320036c79ec2.png

版本一

特点

  • cookies读取,随机选取一个访问网页
  • 导出结果排除了百度自家产品
  • excel导出数据
  • 简单多线程案例可参考
#百度搜索结果抓取
#author/微信:huguo00289
# -*- coding: utf-8 -*-

import requests,time,random
from fake_useragent import UserAgent
from lxml import etree
import threading
import xlsxwriter



class Baidu_search():
    def __init__(self):
        self.url="https://www.baidu.com/s?wd="
        self.ua=UserAgent()
        self.search_datas=[]



    #获取cookies
    def get_cookies(self):
        with open("cookie.txt", "r", encoding="utf-8") as f:
            cookies = f.readlines()
            cookie=random.choice(cookies)
            cookie=cookie.strip()
        return cookie


    #获取搜索结果
    def get_search_objects(self,search_url):
        headers={
            "User-Agent":self.ua.random,
            'Cookie':self.get_cookies(),
        }
        html=requests.get(search_url,headers=headers,timeout=8).content.decode("utf-8")
        time.sleep(2)
        req=etree.HTML(html)
        h3s=req.xpath('//div[@]/h3[@]/a')
        hrefs=req.xpath('//div[@]/h3[@]/a/@href')
        for h3,href in zip(h3s,hrefs):
            h3=h3.xpath('.//text()')
            h3=''.join(h3)
            href=self.get_website_url(href)
            data=h3,href
            self.search_datas.append(data)
            print(data)




    # 获取真实地址
    def get_website_url(self,baidu_url):
        r = requests.head(baidu_url, stream=True)
        website_url = r.headers['Location']
        # print(website_url)
        return website_url


    #插入excel
    def write_to_xlsx(self, file_name):
        workbook = xlsxwriter.Workbook(f'{file_name}_{time.strftime("%Y-%m-%d ", time.localtime())}.xlsx')  # 创建一个Excel文件
        worksheet = workbook.add_worksheet(file_name)
        title = ['标题', '网址']  # 表格title
        worksheet.write_row('A1', title)
        for index, data in enumerate(self.search_datas):
            # content = content.rstrip()
            # keyword, rank, include_num, chart_url, title, game_id, company_num, long_words_num = data
            num0 = str(index + 2)
            row = 'A' + num0
            # data = [name, size, game_id]
            worksheet.write_row(row, data)
        workbook.close()

        print("搜索结果数据插入excel表格成功!")





    def main(self,keyword,num):
        for i in range(0, num):
            print(f'正在查询第{i+1}页百度搜索结果数据..')
            ym = i * 10
            search_url = f"{self.url}{keyword}&ie=UTF-8&pn={ym}"
            self.get_search_objects(search_url)

        self.write_to_xlsx(keyword)


    #多线程
    def Thread_main(self,keyword,num):
        threadings=[]
        for i in range(0, num):
            print(f'正在查询第{i+1}页百度搜索结果数据..')
            ym = i * 10
            search_url = f"{self.url}{keyword}&ie=UTF-8&pn={ym}"
            t=threading.Thread(target=self.get_search_objects,args=(search_url,))
            threadings.append(t)
            t.start()

        for x in threadings:
            x.join()

        print("多线程查询百度搜索结果完成")

        print(self.search_datas)


if __name__=='__main__':
    keyword="工业设计"
    num=10
    spider=Baidu_search()
    spider.main(keyword,num)
    #spider.Thread_main(keyword, num)

版本二

特点

  • cookies 固定,不可变
  • 数据几乎全部导出,排名也已经写入
#关键词百度搜索结果查询
#20191121 by 微信:huguo00289
# -*- coding: UTF-8 -*-

import requests,time
import urllib.parse
from bs4 import BeautifulSoup
from fake_useragent import UserAgent
import json


def ua():
    ua = UserAgent()
    return ua.random

headers={
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Cache-Control': 'max-age=0',
    'Connection': 'keep-alive',
    'Cookie':Cookie ,
    'Host': 'www.baidu.com',
    'Referer': 'https://www.baidu.com/?tn=48021271_6_hao_pg',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent':ua()
    #'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',
}


#获取百度跳转真实网址
def get_trueurl(url):
    try:
        r = requests.head(url, stream=True)
        zsurl = r.headers['Location']
    except:
        zsurl=url
    return zsurl

#获取网页信息
def get_response(url):
    """
    #代理ip
    proxy = '120.83.105.195:9999'
    proxies = {
        'http': 'http://' + proxy,
        'https': 'https://' + proxy
    }
    response=requests.get(url,headers=ua(),proxies=proxies,timeout=10)"""
    #response = requests.get(url, headers=ua(),timeout=10)
    response = requests.get(url, headers=headers, timeout=10)
    print(f'状态码:{response.status_code}')
    time.sleep(2)
    response.encoding='utf-8'
    req=response.text
    return req

#查询搜索结果
def get_bdpm(keyword,num):
    """
    #转换为utf-8编码
    key_word = urllib.parse.quote(keyword)
    print(key_word)
    """
    for i in range(0,int(num)):
        print(f'正在查询{i + 1}页搜索结果...')
        ym=i * 10
        url=f"https://www.baidu.com/s?wd={keyword}&ie=UTF-8&pn={ym}"
        #print(url)
        req=get_response(url)
        #print(req)
        soup=BeautifulSoup(req,'lxml')
        divs=soup.find('div',id="content_left").find_all('div')
        for div in divs:
            if 'class="result'in str(div):
                try:
                    pm=div['id']
                except:
                    pm=''
                title=div.find('a').get_text()
                title=title.strip()
                href=div.find('a')['href']
                zsurl=get_trueurl(href)
                print(pm,title,zsurl)
        time.sleep(5)







if __name__ == '__main__':
    while True:
        keyword =input('请输入要查询的关键词:')
        num = input('请输入要查询的页码数:')
        try:
            get_bdpm(keyword,num)
        except IndexError as e:
            print(e)
            print("查询结果失败!")

c98861510a873f4303ed981db92f853d.png      

微信公众号:二爷记

不定时分享python源码及工具

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_722863.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html5网格布局建站,CSS网格布局的示例代码

本文介绍了CSS网格布局的示例代码,分享给大家,具体如下:浏览器兼容性可以看出CSS网格布局从Safari 10.1, Firefox 52, Chrome 60,Edge 15开始受到支持。网格布局页面基本元素:OneTwoThreeFourFive样式:.wra…

访问不了_浏览器访问不了网站??

话说,总有一些时候就是见鬼了,电脑死活上不去网~最神的操作是“重启”,十有八九会解决滴。but,如果遇到你的电脑QQ啥的还能上网,唯独浏览器(部分以前可以上的去的网站)不好使,那么你应该会百度,…

iis html asp,IIS 部署 ASP.NET 网站

1. 安装 IIS从控制面板中选择“程序和功能”,选择“打开或关闭 Windows 功能”:image_1ceiq3spb1v20r806r61huh2an9.png-156.3kB将 IIS 的选项全部勾选,需要展开子级目录一个一个点,最后的状态需要为勾选状态:image_1c…

禁止查看js文件_robot文件在网站中的重要作用

大家都知道搜索引擎通过蜘蛛爬行来搜索抓取信息,robot.txt文件就是和蜘蛛交流的文件,很多人都会说介绍要怎么让蜘蛛来爬行,却很少人知道可以用robot.txt去操控蜘蛛,robot.txt用得好的话蜘蛛可以为你所用。Robots.txt是网站管理员创…

ajax url 路径怎么写_怎样编写站内的SEO——URL

这期的分享我们接着说站内SEO中的URL。一、什么是URL?URL (Uniform Resource Locator), 通常称为“web地址”,也就是我们常说的“link,链接”,是用户可读的文本,旨在替换计算机与服务器通信时使用的数字(IP地址)。URL由…

简单的物流管理网站制作源码_清远专业制作搬运公司企业网站 | 980元做一个物流搬运公司企业网站...

企业网站设计开发过程中有很多的原则。一个好的网站,设计是非常重要的,如果设计的不能吸引用户,也满足不了用户的需求,那么这个网站之前所做的努力都白费了,我们就只知道不要犯一些基本的错误,那么这个网站…

华为抓取错误日志在哪里_网站日志数据分析教程

网站日志的数据分析主要是使用相关工具进行,工具类型也有很多。网页版可以用拉格好(www.loghao.com),桌面版可以用爱站或者光年,也可以使用shell分析日志。。。分析日志的作用有很多,可以概括几点:1.了解蜘蛛对页面的抓…

HTML个人网站设计(源码)

关于前端,我觉得我是没有太多发言权的,毕竟本身对于设计这一方面并不是太感兴趣,但是学了几天吧,觉得也就这回事,考量的还是数学功底居多,前期很简单,后期的话,制作一些比较由难度的动画效果还是…

ckks方案优化最好的_如何更科学的进行SEO优化?保持排名稳定

网站SEO优化服务,常常被站长们称之为搜索引擎优化,为的是让网站参与关键词排名,获取大量展现和点击咨询,SEO让网站推广宣传变得有迹可循。一、科学制定网站SEO优化方案的前提网站在进行优化之前做好相关的优化方案对后期优化的开展…

seo查询工具源码_怎么查询网站是否被黑,查询网站是否被黑,被恶意污染的方法...

什么是网页挂马 网页挂马是指恶意攻击者攻击WEB网站后,在网页中嵌入一段代码或脚本,用于自动下载带有特定目的木马程序,而恶意攻击者实施恶意代码或脚本植入的行为通常称为“挂马”。 什么是SEO暗链 SEO暗链是SEO黑帽手法中相当普遍的一种手段…

php论坛有哪些_公司网站制作的方式和流程有哪些

每一个企业,务必有自身的网站,这就等同于是一张个人名片,是让他人认识你的必需方式。公司网站制作前,必须搞搞清楚,建网站的目地是啥,吸引住访问者的兴趣爱好点是啥,总体目标不可以设定过多&…

旅游网站的网页设计代码_深圳网页设计公司|高端网页设计【尼高网站设计】...

我们在网页设计前要考虑的比较多,除了网站的定位和目标,还有重要的市场。今天深圳尼高网站设计公司就简单的从线框设计来讲解一下对其他的影响。 我们创造任何产品的最终目的,也是最重要的目标是做到这一点,并使其满足用户的需求并…

wap建站程序源码_织梦程序搭建网站实例教程,想尝试搭建网站的朋友赶紧保存了...

在昨天跟大家分享了一个完整的个人网站搭建流程,对建站好奇的朋友不妨看看,但是有网友留言还是太复杂了,今天就以我的个人网站为例,跟大家说说一个网站是怎么上传上线的吧!域名的注册申请我是在2019年12月22日在阿里云…

url 收录工具_百度收录网站的必知技巧

解决百度收录的问题,是SEO职业的工作者最为头疼的一件事情。无论文章发布的觉得多有质量都不一定收录,而没有收录何谈排名,下面我们看解决百度收录的核心技巧。百度收录网站有一定的特性,也有一些我们常遇见的问题。但这里面有些能…

img加载本地图片_网站图片加载,尽享顺畅丝滑!

今家介绍如何让图片优雅地显示起初打开一篇文章加载动画很久下面的演示仅是因为浏览器已缓存实际第一次访问页面时须等待许久实际上我只是想要页面加载动画并不希望等待网页图片全部加载于是我想到了图片懒加载功能什么是图片懒加载?当打开一个页面时,只…

python提取word指定行的文字_PDF转WORD格式,提取图片中的文字,一个网址完美搞定!关键是免费!!!七教网站长亲测可用,推荐给大家!!...

昨天晚上,七教网教师朋友群里有老师咨询PDF格式转换成WORD格式的软件。当然有。既然老师们有需求,我一定全力帮助!转换的软件有很多,WPS 也有自带,只是需要花钱购买会员。既然不花钱就能搞定,何必去花钱呢。…

网站改版的需要注意的几个要点

http://www.williamlong.info/archives/2204.html改版,是一个问题。越来越多互联网公司产品人员意识到这个问题,无论是豆瓣的改版,还是Facebook的改版都遭到了用户的疯狂抵制。和传统1.0网站相比,2.0网站用户的力量被无限放大&…

分享30个最新的单页网站设计案例

单页网站是指只有一个页面的网站,这种形式的网站曾经非常流行,现在依然有很多人喜欢。不过,并不是每个网站都适合做成单页,一般都是内容比较少而且将来内容也不怎么增加的情况才适合这样做。如果你打算做一个这样的网站&#xff0…

宝塔面板网站一打开cpu百分百_软卓学堂 | 从购买服务器和域名到搭建网站

◆ ◆ ◆ ◆从购买服务器和域名到搭建网站◆ ◆ ◆ ◆使用工具:Xshell终端模拟器:Xshell是一个终端模拟软件,而且是远程近程都可以。就是模拟服务器所在的linux,在xshell中可以输入命令,就像在服务器的linux中输入命令…

ASP.NET MVC模型绑定的6个建议,徐汇区网站设计

ASP.NET MVC中的Model Binding使用起来非常简单。你的Action方法需要数据,在传入的HTTP请求中携带着你需要的数据,数据可以在请求的表单数据中,还可能在你的URL地址本身中。通过DefaultModelBinder,可以神奇地将表单中的数据和路由…