我一直在尝试抓取以下网站:https://sv.siman.com/ 然而,我做网页抓取的经验并没有让我为 Javascript 呈现的网站做好准备。我最初尝试使用 Beautifulsoup,但源代码不包含您在检查页面时获得的 HTML 代码。然后我尝试使用 html_requests,但我并没有走得太远,因为它似乎是随机工作的。这是在一个类别页面中获取产品链接的初始代码:
import asyncio
from requests_html import AsyncHTMLSession
asession = AsyncHTMLSession()
async def get_pythonorg():
r = await asession.get('https://sv.siman.com/moda/damas/blusas')
print(r.html.absolute_links)
asyncio.run(get_pythonorg())
我通常得到的错误是 asyncio.run() 无法从正在运行的事件循环中调用。但是,有时代码工作正常,我不知道为什么。
我也尝试了 Selenium,但到目前为止我只成功打开了该网站。代码如下:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pandas as pd
PATH = "C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"
options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-logging'])
driver = webdriver.Chrome(PATH, options=options)
driver.get("https://sv.siman.com/moda/damas/blusas")
button = driver.find_element_by_name("Clubes")
button.click
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.LINK_TEXT, "Clubes"))
)
element.click
except:
driver.quit()
解释完之后,我将知道描述我想要实现的目标。我想自动访问所有产品类别并浏览不同的产品以提取相关信息。我使用 Beautifulsoup 了解此过程的逻辑,并且之前已经构建了功能强大的 scrpaers,但我无法使其正常工作。