如何在Python中使用硒来提取“查看更多”中的文本?

时间:2019-08-02 22:01:14

标签: python selenium-webdriver css-selectors innerhtml

driver = webdriver.Chrome(r'XXXX\chromedriver.exe')
driver.get('https://websummit.com/speakers')

https://websummit.com/speakers

大家好, 我正在Python中使用Selenium来从上述网站中提取演讲者的信息,但是在“查看更多信息”下无法提取更多信息。

我每次只能通过单击“查看更多”来提取25位发言人的信息,但是我希望找到一种更好的解决方案,不需要单击“查看更多”并全部提取。

enter image description here

下面是我的代码:

speakers=WebDriverWait(driver,20).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,'.speaker__content__inner')))
speakers_list = []
for e in speakers:
    speakers_list.append(e.get_attribute('innerHTML'))
print(speakers_list)

任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:2)

  

我希望找到一个不需要单击“查看更多”并将其全部提取的更好的解决方案。

此外,如果您仅想获取此信息,则实际上不需要使用硒,您只需查看requests库-下面的代码将为您提供页面上的所有信息

import requests
import json
for i in range(15):
    req = requests.get('https://api.cilabs.com/conferences/ws19/lists/speakers?per_page=25&page='+str(i))
    if(req.status_code == 200):
        josn2 = req.json()
        data = josn2.get('data')
        records = []
        for x in data:
            records.append({"name" : x.get('first_name') + " "+ str(x.get('last_name')),
              "job_title" : x.get('job_title'),
              "company_name" : x.get('company_name'),
              "country" : x.get('country')})
    print(records)
print(i)