吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3940|回复: 15
收起左侧

[Python 转载] 用python写的关键词在搜索引擎中的排名

[复制链接]
叶凯 发表于 2020-10-16 18:12
无聊写来练练手,觉得有用的拿去
只写了百度pc和360的排名,百度手机、搜狗、神马也是差不多的,直接自己改就行了

[Python] 纯文本查看 复制代码
import requests
from bs4 import BeautifulSoup
import re
import time
from fake_useragent import UserAgent


# 搜索引擎排名类
class SearchRank():
    # 关键词
    keyword = None
    # 匹配的域名
    matchUrl = None
    # 当前排名
    rank = 0
    # 请求头
    headers = {
        'User-Agent': UserAgent().random
    }

    # 初始化
    def __init__(self, keyword, matchUrl):
        self.keyword = keyword
        self.matchUrl = matchUrl

    # 百度pc排名
    def rankBaiduPc(self):
        for i in range(0, 100, 10):
            url = f'https://www.baidu.com/s?ie=utf-8&wd={self.keyword}&pn={i}'
            res = requests.get(url=url, headers=self.headers)
            if res.status_code == 200:
                res_text = res.text
                # print(res.content.decode('utf-8'))
                soup = BeautifulSoup(res_text, 'lxml')
                # 找出当前页中id为content_left下的子div的数据,返回的是一个列表数据
                html = soup.select('#content_left>div[tpl=se_com_default]')
                # 如果html的长度为0,证明当前操作频繁,没有获取到所需数据
                print(len(html))
                for j in range(len(html)):
                    # 在结果中匹配是否包含有matchUrl的值
                    result = re.search(self.matchUrl, str(html[j]))
                    if bool(result):
                        self.rank = self.rank + j
                        return self.rank
                self.rank += len(html)
            time.sleep(10)

    # 360排名
    def rank360(self):
        for i in range(0, 10):
            url = f'https://www.so.com/s?ie=utf-8&src=360sou_newhome&q={self.keyword}&pn={i}'
            res = requests.get(url=url, headers=self.headers)
            if res.status_code == 200:
                res_text = res.text
                # print(res.content.decode('utf-8'))
                soup = BeautifulSoup(res_text, 'lxml')
                # 找出当前页中所有包含类名res-list的数据,返回的是一个列表数据
                html = soup.select('.res-list')
                # 如果html的长度为0,证明当前操作频繁,没有获取到所需数据
                print(len(html))
                for j in range(len(html)):
                    # 在结果中匹配是否包含有matchUrl的值
                    result = re.search(self.matchUrl, str(html[j]))
                    if bool(result):
                        self.rank = self.rank + j
                        return self.rank
                self.rank += len(html)
            time.sleep(10)


obj = SearchRank('安卓破解', 'www.52pojie.cn')
res = obj.rank360()
if res:
    print(f'网站排名是{res}')
else:
    print('当前关键词未有排名')

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
Sandwiches + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

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

law.liu 发表于 2021-7-8 15:11
File "C:\TMP\key.py", line 5, in <module>
    from fake_useragent import UserAgent
ImportError: cannot import name 'UserAgent' from 'fake_useragent' (unknown location)
楼主这是什么意思?小白
adzs552 发表于 2021-7-8 16:58
law.liu 发表于 2021-7-8 15:11
File "C:\TMP\key.py", line 5, in
    from fake_useragent import UserAgent
ImportError: cannot imp ...

导入错误,感觉是没有这个包,是不是你python版本不一样或者没有这个包
heelihua 发表于 2020-10-16 18:28
MinnieLui 发表于 2021-4-1 16:27
楼主,这个可以改成爬谷歌的吗?
 楼主| 叶凯 发表于 2021-4-1 19:05
MinnieLui 发表于 2021-4-1 16:27
楼主,这个可以改成爬谷歌的吗?

调整下代码是可以的,这个要自己改了
MinnieLui 发表于 2021-4-8 11:20
好的,我试试看,谢谢楼主
花开叶落本无缘 发表于 2021-4-10 10:40
有什么作用的
eden88888 发表于 2021-5-11 09:17
还没有学会,支持一个
一日知三秋 发表于 2021-7-8 16:49

学习,支持一个
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-25 06:56

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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