首页 > 解决方案 > 在网站中自动搜索

问题描述

我有一个要在网站上查找的项目列表,我正在尝试使研究自动化;我是 BeautifulSoup 的新手,我不确定我正在寻找的东西是否可行。

本网站的搜索框有以下标签:

<input id="q" name="q" type="text" **value="moby dick"** class="ui-autocomplete-input">

假设我想搜索一本新书“Amleto”而不是“moby dick”。我试过了

content = driver.page_source.encode('utf-8').strip() 
soup = BeautifulSoup(content,"html.parser")
searchBox = soup.find('input', {'id': 'q'})
newSearch = Tag(builder=soup.builder, name='input', attrs={'id':'q',
                                                               'name':'q',
                                                               'type':"text",
                                                               '**value':"Amleto"**,
                                                               'class':"ui-autocomplete-input")

searchBox.replaceWith(newSearch)

此代码有效,它找到正确的标签并将值“moby dick”替换为 Amleto。事实上,如果我再运行:

soup.find('input', {'id': 'q'})

我得到“Amleto”

尽管如此,在搜索框中我仍然看到“moby dick”;“replaceWith”功能似乎改变了 html 代码,但尚未应用此更改

有什么方法可以应用这种更改还是我偏离了轨道?

我希望我说清楚,谢谢大家

标签: beautifulsoup

解决方案


我认为更好的方法是使用 selenium 来自动化浏览器活动。Beautiful Soup 可以解析 html,但是 selenium 会打开一个新的浏览器窗口,导航到所需的 URL,输入搜索项名称,然后按搜索模拟真实用户行为。它主要用于自动化前端测试但是您可以使用它来完成您的任务。

文档:https ://selenium-python.readthedocs.io/


推荐阅读