【发布时间】:2021-04-09 23:36:40
【问题描述】:
我希望从通过 javascript 自动生成其内容的网站上抓取特定链接。当我手动检查网站时,我可以轻松找到我想要抓取的链接。您可以在下面看到一个示例。基本上,我想找到一种方法来自动找到
<a href="/bsbe/document/JURE210005412/format/xsl/part/L?oi=5wDyMgzh8g&amp;sourceP=%7B%22source%22%3A%22TL%22%2C%22sort%22%3A%22date%22%7D"...>
<li class="toolpane_list_entry toolpane_list_entry_right">之后的标签
例子:
<li class="toolpane_list_entry toolpane_list_entry_right">
<a href="/bsbe/document/JURE210005412/format/xsl/part/L?oi=5wDyMgzh8g&sourceP=%7B%22source%22%3A%22TL%22%2C%22sort%22%3A%22date%22%7D" class="button bnext__button button--next bnext__button--next" id="docnextbuttontop" aria-disabled="false" aria-controls="id_docPanelContainer">
<span>
<span>Nächster Treffer</span>
<em class="sicon" aria-hidden="true">
<svg focusable="false" class="svg-icon-chevron_right" height="100%" viewBox="0 0 24 24" width="100%" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"></path>
<path d="M0 0h24v24H0z" fill="none"></path>
</svg>
</em>
</span>
</a>
但是,当我使用 selenium 和 python 加载此页面时,我正在寻找的 <a href...> 不存在(见下文)。
<li class="toolpane_list_entry toolpane_list_entry_right">
<span class="button bnext__button button--nextDisabled bnext__button--nextDisabled">
<span>Nächster Treffer</span>
<em aria-hidden="true" class="sicon">
<svg class="svg-icon-chevron_right" focusable="false" height="100%" viewbox="0 0 24 24" width="100%" xmlns="http://www.w3.org/2000/svg">
<path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z" fill="currentColor"></path>
<path d="M0 0h24v24H0z" fill="none"></path>
</svg>
</em>
</span>
</li>
如您所见,整个 标签不存在。
这是我的python代码:
from selenium.webdriver.firefox.options import Options as FirefoxOptions
from bs4 import BeautifulSoup
import os
from selenium import webdriver
options = FirefoxOptions()
options.add_argument("--headless")
firefox_driver = os.getcwd() +"\\geckodriver.exe"
driver = webdriver.Firefox(options=options, executable_path=firefox_driver)
driver.get("https://gesetze.berlin.de/bsbe/document/JURE210005730")
# returns empty list
driver.find_elements_by_class_name("button bnext__button button--next bnext__button--next")
soup_file=driver.page_source
soup = BeautifulSoup(soup_file)
print(soup.find_all("li", {"class":"toolpane_list_entry toolpane_list_entry_right"}))
您知道可能是什么问题吗?您认为有办法提取链接吗?我可以提供任何其他信息来查找问题吗?
谢谢
【问题讨论】:
-
你需要包含你的硒代码
-
driver.page_source获取页面的实际源代码,这意味着在任何 Javascript 运行之前。您需要使用一些find_elements_xxx方法来浏览页面的实际 DOM。 -
嗨蒂姆,我试过了,但它不起作用。我试图通过它的 id 和 class 找到元素,它回来时没有任何东西。事实上,当我列出所有 id 时,它并不在其中。
-
用简单的语言解释你想在这个页面上找到什么gesetze.berlin.de/bsbe/document/JURE210005730你的问题很难阅读。
-
你想点击哪个按钮?
标签: python selenium web-scraping