Python通过tkinter实现百度搜索的示例代码
作者:wx_zhu6201976 发布时间:2022-06-28 01:28:46
标签:Python,tkinter,百度搜索
本文主要介绍了Python通过tkinter实现百度搜索的示例代码,分享给大家,具体如下:
"""
百度搜索可视化
"""
import tkinter
import win32api
from selenium.webdriver import Chrome
entry = None
def callback():
global entry
keywords = entry.get()
if not keywords:
win32api.MessageBox(0, '请输入搜索关键字', '提示', 0)
return
chrome = Chrome()
chrome.get('https://www.baidu.com/')
chrome.find_element_by_id('kw').send_keys(keywords)
chrome.find_element_by_id('su').click()
# bilibili关键字搜索
# chrome.get('https://www.bilibili.com/')
# chrome.find_element_by_xpath('//form[@id="nav_searchform"]/input').send_keys(keywords)
# chrome.find_element_by_xpath('//div[@class="nav-search-btn"]/button').click()
def main():
global entry
tk = tkinter.Tk()
# tk.resizable(width=False,height=False) # 固定窗体大小?无效
tk.title('百度搜索')
# 1.设置窗体居中
# screenwidth = tk.winfo_screenwidth() # 获取屏幕宽度
# screenheight = tk.winfo_screenheight() # 获取屏幕高度
# # 计算窗体大小,位置参数,width,height:窗体宽高
# width = 100
# height = 50
# size = '%dx%d+%d+%d' % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)
# tk.geometry(size) # 设置窗体位置为屏幕居中
# 2.设置窗体右下角,无效
# screenwidth = tk.winfo_screenwidth() # 获取屏幕宽度
# screenheight = tk.winfo_screenheight() # 获取屏幕高度
# print(screenwidth,screenheight)
# # 计算窗体大小,位置参数,width,height:窗体宽高
# width = 100
# height = 50
# size = '%dx%d+%d+%d' % (width, height, (screenwidth - width), (screenheight - height))
# tk.geometry(size) # 设置窗体位置为屏幕右下角
# 获取窗体x,y
# tk.update()
# print(tk.winfo_x())
# print(tk.winfo_y())
tk.geometry('+0+0') # 固定屏幕左上角
# tk.geometry('+1440+770')
entry = tkinter.Entry(tk)
entry.pack()
button = tkinter.Button(tk, text='百度一下', command=callback)
button.pack()
tk.mainloop()
if __name__ == '__main__':
main()
补充:python模拟百度搜索点击链接
# coding: utf-8
import os
import time
import requests
import urllib.parse
from bs4 import BeautifulSoup
from urllib.parse import urlparse
from fake_useragent import UserAgent
from multiprocessing.pool import ThreadPool
LOCATIONS = {}
GLOBAL_THREAD = 500
GLOBAL_TIMEOUT = 50
def get_links(keyword, generator, pages):
links = []
for page in range(int(pages.split("-")[0]), int(pages.split("-")[1]) + 1):
for genera in range(int(generator.split("-")[0]), int(generator.split("-")[1]) + 1):
links.append(
"http://www.baidu.com.cn/s?wd=" + urllib.parse.quote(keyword + str(genera)) + "&pn=" + str(page * 10))
return links
def get_page(url):
headers = {"user-agent": UserAgent().chrome}
req = requests.get(url, headers=headers)
req.encoding = "utf-8"
soup = BeautifulSoup(req.text, "lxml")
for link in soup.select("div.result > h3.t > a"):
req = requests.get(link.get("href"), headers=headers, allow_redirects=False)
if "=" in req.headers["location"]:
root = urlparse(req.headers["location"]).netloc
LOCATIONS[root] = req.headers["location"]
def baidu_search():
try:
os.system("cls")
print("-" * 56 + "\n")
print("| BaiduSearch Engine By 美图博客[https://www.meitubk.com/] |\n")
print("-" * 56 + "\n")
keyword = input("Keyword: ")
generator = input("Generator(1-10): ")
pages = input("Pages(0-10): ")
start = time.time()
pool = ThreadPool(processes=GLOBAL_THREAD)
pool.map(get_page, get_links(keyword, generator, pages))
pool.close()
pool.join()
end = time.time()
path = r"D:\Desktop\result.txt"
save_result(path)
print("\nSava in %s" % path)
print("Result count: %d" % len(LOCATIONS.values()))
print("Running time: %ds" % (end - start))
except:
print("\nInput Error!")
exit(0)
def save_result(path):
with open(path, "w") as file:
for url in list(LOCATIONS.values()):
file.write(url + "\n")
baidu_search()
来源:https://blog.csdn.net/zhu6201976/article/details/103941292


猜你喜欢
- 引言本文想要解决的问题是当DataFrame中某一列元素为不定长度的数组时,该如何对它们进行拆分分解为后续元素,从而进行进一步的提取操作,数
- 前言:python多进程,经常在使用,却没有怎么系统的学习过,官网上面讲得比较细,结合自己的学习,整理记录下官网:https://docs.
- 如果看到特别感兴趣的抖音vlogger的视频,想全部dump下来,如何操作呢?下面介绍介绍如何使用python导出特定用户所有视频信息抓包分
- 本文实例讲述了Python高级特性之闭包与装饰器。分享给大家供大家参考,具体如下:闭包1.函数参数:(1)函数名存放的是函数的地址 (2)函
- 1. 用 Numpy ndarray 作为数据传入 plyimport numpy as npimport matplotlib as mp
- 前言range() 和 xrange() 是两个函数,可用于在 Python的 for 循环中迭代一定次数。在 Python 3 中,没有
- 用了一段时间的 typescript 之后,深感中大型项目中 typescript 的必要性,它能够提前在编译期避免许多 bug,如很恶心的
- yaml 文件的应用场景与格式介绍yaml 文件的应用场景yaml其实也类似于 json、txt ,它们都属于一种文本格式。在我们的实际工作
- 本文实例讲述了JS定义函数的几种常用方法。分享给大家供大家参考,具体如下:在 JavaScript 语言里,函数是一种对象,所以可以说函数是
- Pygame的Draw绘图Pygame 中提供了一个draw模块用来绘制一些简单的图形状,比如矩形、多边形、圆形、直线、弧线等。pygame
- 突然收到MySQL报警,从库的数据库挂了,一直在不停的重启,打开错误日志,发现有张表坏了。innodb表损坏不能通过repair table
- 我就废话不多说了,大家还是直接看代码吧!from tensorflow.python.keras.models import Sequent
- 外面很多所谓sitemap生成代码都只生成目录文件地址,没生成动态的,我后来自己写了这个,是支持动态的,例子: 如你是文章网站,文章有200
- 1. ... 对象没错,你没看错,就是 "..."在Python中 ... 代表着一个名为 
- 一:模板要了解jinja2,那么需要先理解模板的概念。模板在Python的web开发中广泛使用,它能够有效的将业务逻辑和页面逻辑分开,使代码
- 概述Go 语言中的 new 和 make 一直是新手比较容易混淆的东西,咋一看很相似。不过解释两者之间的不同也非常容易。new 的主要特性首
- 如图所示,有一个test文件夹,里面有3个子文件夹,每个子文件夹中有若干图片文件#场景1 读取一个文件夹中所有文件,存入到一个list表中#
- 数据库,网站运营的基础,网站生存的要素,不管是个人用户还是企业用户都非常依赖网站数据库的支持,然而很多别有用心的攻击者也同样非常&l
- 通过亲密性原则,我们可以将一个页面中的元素按照某种逻辑理解上的差异划分成不同的元素组合;再通过对齐原则,使这些不同的元素组合在视觉上看起来彼
- 本文实例讲述了thinkphp3.x连接mysql数据库的方法。分享给大家供大家参考,具体如下:惯例配置文件:ThinkPHP/conf/c