我正在尝试从德国的一个站点获取一些信息。由于此站点通过单击网站底部的向下箭头来加载更多内容,因此我认为我应该使用selenium
来实现加载过程。之后,该脚本应通过BeautifulSoup获取所需的信息并将其获取到CSV文件。
不幸的是,我的脚本似乎没有单击所需的按钮,因此我仅收到信息的第一部分。
我的代码看起来如下:
import csv
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
with open('shoop.csv','w', encoding='utf-8') as csv_file:
csv_writer = csv.writer(csv_file, delimiter=";")
csv_writer.writerow(['Headline', 'Cashback'])
driver = webdriver.Firefox()
driver.get('https://www.shoop.de/stoebern/haus_technik/3/popular/')
driver.find_element_by_class_name('icon-down_open_big').click()
r = driver.page_source
driver.quit()
soup = BeautifulSoup(r)
for advertiser in soup.find_all('div', {'class': 'merchant_item'}):
headline = advertiser.find('h3', {'class':'merchant_name'}).text
cashback = advertiser.find('span', {'class':'rates_number'}).text
liste = ([headline, cashback])
print(liste)
csv_writer.writerow(liste)
csv_file.close()
该站点上似乎有很多JavaScript。也许只有当用户在一定程度上向下滚动时,箭头才会出现。当我将滚动添加到您的代码中时,将箭头成功按下
通过执行脚本来完成硒中的页面:
# Whenever you want to press the arrow, scroll down with this line
driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')
driver.find_element_by_class_name('icon-down_open_big').click()