吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

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

[Python 转载] 针对一个百度热搜榜单的数据爬取

[复制链接]
angelb 发表于 2022-2-5 01:37
根据这位朋友的帖子学到的https://www.52pojie.cn/forum.php?mod=viewthread&tid=1582275&extra=page%3D1%26filter%3Dauthor%26orderby%3Ddateline

直接上代码把
[Python] 纯文本查看 复制代码
from xml import etree
import time,json
import requests
from lxml import etree
def dingtalk_warning(message):
    webhook = "https://oapi.dingtalk.com/robot/send?access_token=你自己的钉钉" # 或者微信公众号  等等自己百度即可
    headers = {'Content-Type': 'application/json'}
    data = {
        "msgtype": "text",
        "text": {
            "content": message,
        },
    }
    x = requests.post(url=webhook, data=json.dumps(data), headers=headers)
    print(x.content.decode())
    if x.json()["errcode"] == 0:
        return True
    else:
        return False
def heat():
    url = "百度热搜"
    header = {
        "Referer": "https://www.baidu.com/",
        "sec-ch-ua-platform" : "Windows",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36",
    }
    req = requests.get(url,headers=header).text
    # req.encoding = "utf-8"
    xl = etree.HTML(req)
    content = '//*[@id="hotsearch-content-wrapper"]/li '
    req_ifon = xl.xpath(content)
# 这是一个大坑  爬取的数据他是有问题 不是按照 123456  他是  14  这样的  自己定音一个方法
    asd = [1,4,2,5,3,6]
    sum = []
    for i,j in zip(req_ifon,asd):
        time.sleep(1)
        webzgu = i.xpath('./a/span[2]/text()')[0]
        re = i.xpath('./span/text()')
# 这个地方是解决那个热字的代码
        # if not re:
        #     print(j , webzgu)
        # else:
        #     print(j , webzgu , re[0])
        print(webzgu)
        sum.append(" "+str(j) + " " + webzgu + "\n")
        # return sum
    # print(sum
这是给他排序的
    sum.sort()
    dingtalk_warning("报警平台\n%s" % (("").join(sum)))



if __name__ == '__main__':
    heat()



顺便请教大家几个问题
上面代码有个问题自己解决不了
就是有的有热搜 带了那个热字
不知道怎么把他放进去  有的带 有的不带



以后都是根据上面哪位童鞋的帖子学到的

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

 楼主| angelb 发表于 2022-2-6 13:54
angelb 发表于 2022-2-6 13:39
可以是  可以 我想到了一个办法   给他加个空就好了  
我测试可以 能放进去 没有的给空急好 这样就能满 ...

[Python] 纯文本查看 复制代码
    for i,j in zip(req_ifon,asd):
        time.sleep(1)
        webzgu = i.xpath('./a/span[2]/text()')[0]
        re = i.xpath('./span/text()')
        if not re:
            # print(j , webzgu)
            sum.append(" "+str(j) + " " + webzgu + " " + "\n")
        else:
            sum.append(" "+str(j) + " " + webzgu + " %s"%(re[0]) + "\n")
    sum.sort()
    print(("").join(sum))

# 可以看下这个案例
pangdundun 发表于 2022-2-6 12:01
“热”字干脆全去掉如何,往里面推个js语句如下

[JavaScript] 纯文本查看 复制代码
let tags = document.evaluate("//div[contains(@class, 'hot-tag')]", document);
let elements = [];
while (true) {
    let tag = tags.iterateNext();
    if (tag) {
        elements.push(tag);
    } else {
        break;
    }
}
for (ele of elements) {
    ele.remove();
}
zm55555 发表于 2022-2-5 09:44
sunnyboyqiqi 发表于 2022-2-5 10:00
飘浮 发表于 2022-2-5 10:01
一会测试下。。
Loobrey 发表于 2022-2-5 10:21
感谢分享!
dmxayjn 发表于 2022-2-5 11:19
太棒了。。收藏了。。是个好东西啊。
wqs0987 发表于 2022-2-5 11:51
感谢大佬的无私分享
adf28 发表于 2022-2-5 16:23
感谢分享
头像被屏蔽
heng179 发表于 2022-2-5 18:01
提示: 作者被禁止或删除 内容自动屏蔽
fireflyfly 发表于 2022-2-5 20:04
谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

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

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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