针对一个百度热搜榜单的数据爬取
根据这位朋友的帖子学到的https://www.52pojie.cn/forum.php?mod=viewthread&tid=1582275&extra=page%3D1%26filter%3Dauthor%26orderby%3Ddateline直接上代码把
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 =
sum = []
for i,j in zip(req_ifon,asd):
time.sleep(1)
webzgu = i.xpath('./a/span/text()')
re = i.xpath('./span/text()')
# 这个地方是解决那个热字的代码
# if not re:
# print(j , webzgu)
# else:
# print(j , webzgu , re)
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:39
可以是可以 我想到了一个办法 给他加个空就好了
我测试可以 能放进去 没有的给空急好 这样就能满 ...
for i,j in zip(req_ifon,asd):
time.sleep(1)
webzgu = i.xpath('./a/span/text()')
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) + "\n")
sum.sort()
print(("").join(sum))
# 可以看下这个案例 “热”字干脆全去掉如何,往里面推个js语句如下
let tags = document.evaluate("//div", document);
let elements = [];
while (true) {
let tag = tags.iterateNext();
if (tag) {
elements.push(tag);
} else {
break;
}
}
for (ele of elements) {
ele.remove();
} 好东东,谢谢分享! {:1_921:} 一会测试下。。 感谢分享! 太棒了。。收藏了。。是个好东西啊。 感谢大佬的无私分享 感谢分享 谢谢分享
页:
[1]
2