我正在尝试对一个网页进行网络抓取,该网页内部包含多个选项卡。当我单击所需的选项卡并显示其内容后,首先出现两个问题。
1- 网页地址不会更改,并且所有选项卡都相同。
2-当我使用浏览器(firefox和chrome)的“查看页面源”查看页面源时,所有选项卡的页面源看起来也相同,而当我对其中一个选项卡使用“Inspect Elemnt”时,我看到了我的目标所显示代码的 html 形式的内容。
问题是我无法通过用于整个 WEB 世界的网络抓取的 python 典型代码访问所需的选项卡内容。这些代码通常基于 bs4。
有谁有任何想法或示例代码来学习如何处理我的问题?
我正在查看的页面位于以下地址:
如果页面具有 javascript DOM 元素,则无法正确使用 beautifullsoup 进行网页抓取。您尝试抓取的页面具有 javascript 元素并显示数据。
查看源代码和检查元素之间的差异是由浏览器造成的。实际上,浏览器使其可供用户阅读。
综上所述,您必须使用模拟浏览器来获取您要查找的数据。这可以通过 Selenium 来完成。您可以搜索 using selenium and python for webscraping。
这是使用 selenium 和 python 进行网页抓取的简单示例:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
url = 'http://tsetmc.com/Loader.aspx?ParTree=151311&i=63917421733088077#'
#firefox driver for selenium from: https://github.com/mozilla/geckodriver/releases
driver = webdriver.Firefox(executable_path=r'your-path\geckodriver.exe')
driver.get(url)
wait = WebDriverWait(driver, 10)
try:
#wait for the page to load completely
element = wait.until(EC.visibility_of_all_elements_located((By.XPATH, "/html/body/div[4]/form/div[3]/div[2]/div[1]/div[2]/div[1]/table/tbody")))
time.sleep(1)
finally:
driver.quit()
此代码将打开 Firefox,您必须将目录放入'your-path\geckodriver.exe'
部分。
请注意有关 geckodriver 的评论。你需要它来运行硒。
您可以搜索有关 Selenium 的更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)