driver = webdriver.Chrome(ChromeDriverManager().install())
url = 'www.mywebsite.com'
driver.get(url)
response = requests.get(url)
markup = driver.page_source
soup = BeautifulSoup(markup, 'lxml')
for _ in range(50):
driver.find_element_by_tag_name('body').send_keys(Keys.END) # Move the page down
element = driver.find_element_by_class_name('prevnext')
master_list = []
for name in soup.find_all(itemprop='name'):
data_dict = {}
data_dict['company name'] = name.get_text(strip=True, separator = '\n')
master_list.append(data_dict)
df = pd.DataFrame(master_list)
print('Page scraped')
time.sleep(5)
print('Sleeping for 2..')
print('Is the button enabled : ' + str(element.is_enabled()))
print('Is the button visible : ' + str(element.is_displayed()))
element.click();
print('Clicked Next')
driver.implicitly_wait(2)
# # for _ in range(1):
# # print('waiting 10')
# driver.find_element_by_class_name('submit-btn').click()
print('Finished Scraping')
我需要这个来运行 50 页。它刮掉第一个,然后翻过其他的。但是,最后只有第一个被抓取并添加到 df。每页有 20 条记录。我相信我的缩进是错误的。任何帮助表示赞赏。
答案 0 :(得分:0)
看来你犯了一个小错误。
markup = driver.page_source
soup = BeautifulSoup(markup, 'lxml')
从代码中删除这一行并将其添加到 for 循环的开头,因为每次单击时都需要获取源代码,因为每次都会加载新内容。