from selenium import webdriver from selenium.common import NoSuchElementException from selenium.webdriver.common.by import By # 启动浏览器 driver = webdriver.Firefox(executable_path=r'E:\py\geckodriver.exe') # 目标网址 driver.get("https://piaofang.maoyan.com/box-office?ver=normal") # driver.find_element() 获取单个元素数据 # driver.find_elements() 获取一组元素数据 返回值为list r_list = driver.find_elements(By.CSS_SELECTOR, 'div.name-wrap') for i in r_list: driver.implicitly_wait(5) # 隐式等待10秒 name = i.find_element(By.CSS_SELECTOR, 'p.movie-name') name = name.text print(name)爬取只能出来一部分
时间: 2024-03-07 07:51:28 浏览: 244
根据你提供的代码和网址,我看到你正在使用Selenium进行网页爬取,并且使用了CSS选择器来获取电影名称。然而,你说只能爬取到一部分电影名称,这可能是因为在页面上加载了一些动态内容,而你的代码没有等待动态内容加载完成就开始获取数据了。
为了解决这个问题,你可以尝试使用显示等待来等待需要的元素加载完成后再进行数据获取。例如,下面的代码可以等待页面上的所有电影名称加载完成后再进行数据获取:
```python
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 启动浏览器
driver = webdriver.Firefox(executable_path=r'E:\py\geckodriver.exe')
# 目标网址
driver.get("https://piaofang.maoyan.com/box-office?ver=normal")
# 等待电影名称加载完成
wait = WebDriverWait(driver, 10)
names = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, 'div.name-wrap p.movie-name')))
# 获取电影名称
for name in names:
print(name.text)
```
这段代码使用了显示等待来等待所有电影名称的元素加载完成,然后再获取它们的文本内容。这样可以确保你获取到的是完整的电影名称列表。
阅读全文