执行click()

时间:2018-05-20 10:51:41

标签: python selenium web-scraping selenium-chromedriver

我正在抓取这个网站:https://www.findinall.com/finance-category-396

我正在使用Selenium(Python)并在名为" 显示"的下拉菜单中的选项300上执行单击选项。点击自动成功,网页在一页中共同显示12页中的整个数据,但在抓取数据后,只获得前12个数据项,即page_source不会改变。

这是我的代码:

from selenium import webdriver
driver=webdriver.Chrome("/home/ronith/Downloads/chromedriver")

driver.get('https://www.findinall.com/finance-category-396/#')
driver.find_element_by_xpath("//select[@name='per_page']/option[@value  
='300']").click()
driver.implicitly_wait(5)
data=driver.find_elements_by_xpath('//div[@class="pro-list-tb mt15"]')
for i in range(len(data)):
   print(data[i].text,'\n\n')
driver.close()

我想抓取执行点击操作后可用的全部数据。我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

而是使用Selenium来刮取使用BeautifulSoup,请求并导入以下代码

import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import QUrl
from PyQt5.QtWebEngineWidgets import QWebEnginePage
from bs4 import BeautifulSoup
import requests


class Page(QWebEnginePage):
    def __init__(self, url):
        self.app = QApplication(sys.argv)
        QWebEnginePage.__init__(self)
        self.html = ''
        self.loadFinished.connect(self._on_load_finished)
        self.load(QUrl(url))
        self.app.exec_()

    def _on_load_finished(self):
        self.html = self.toHtml(self.Callable)

    def Callable(self, html_str):
        self.html = html_str
        self.app.quit()

并从jssoup import Page(我将其命名为' jssoup')将此代码导入另一个python文件中。

page = Page(url)
soup = bs.BeautifulSoup(page.html, 'lxml')
js_test = soup.find('p', class_='jstest')
print(js_test)