我想做一个搜索系统,当我们在变量中输入一个词时,它搜索本页(所有游戏)的所有链接的名称之间有点像«control-F»并显示结果(名称+链接)使用Selenium (Python).
我不知道怎么做一个这样的系统!如果你能帮忙,那就太好了!
有一个好的代码!
您正在尝试定位页面上的特定元素,然后对它们进行排序以查找关键搜索词。Selenium可以通过许多方法识别页面上的元素,请参阅这里的指南。一旦你找到了所有的元素,你就可以根据感兴趣的搜索项对它们进行过滤。
查找所有感兴趣的元素:
我会利用元素的XPATH
在页面上找到它们,并制作一个列表,然后您可以根据关键字进行搜索。在您的示例中,它们都可以通过以下xpath来识别:
//div[@class="blog-content"]//a
提取所需信息:
一旦你有了元素列表,你将需要迭代它们来提取href
标签(游戏的url)和innerHTML
文本(游戏的名称)。
我在下面的例子中使用了列表推导来做到这一点,它创建了一个字典{url:name, ...}
,你可以从中过滤你的特定项目。
示例代码:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.firefox import GeckoDriverManager
website_url = 'https://steamunlocked.net/all-games-2/'
game_xpaths = '//div[@class="blog-content"]//a'
driver = webdriver.Firefox(service=Service(GeckoDriverManager().install()))
driver.get(website_url)
game_elements = driver.find_elements(By.XPATH, game_xpaths)
games = {g.get_attribute('href'):g.get_attribute('innerHTML') for g in game_elements}
games
"""
Outputs:
{'https://steamunlocked.net/red-tether-free-download/': '—Red—Tether–> Free Download (v1.006)',
'https://steamunlocked.net/hack-g-u-last-recode-free-download/': '.hack//G.U. Last Recode Free Download (v1.01)',
'https://steamunlocked.net/n-verlore-verstand-free-download/': '‘n Verlore Verstand Free Download',
'https://steamunlocked.net/0-n-0-w-free-download/': '0°N 0°W Free Download',
'https://steamunlocked.net/007-legends-free-download/': '007 Legends Free Download', ...
"""
查找特定项(即CTRL+F)
从您的字典中识别和过滤您感兴趣的单词/字符串的特定项。
def search(myDict, search_term):
return [[v,k] for k,v in myDict.items() if search_term.lower() in v.lower()]
>>> search(games, 'Ninja')
[['10 Second Ninja Free Download','https://steamunlocked.net/10-second-ninja-free-download/'],
['10 Second Ninja X Free Download','https://steamunlocked.net/10-second-ninja-x-free-download/']]