使用dt类名称selenium python打印元素

问题描述 投票:0回答:1

我试图在Linkedin中为Sales Navigator写一个简单的刮板,这是我想要废弃的link。它具有为帐户结果选择的特定过滤器选项的搜索结果。

我想要实现的目标是在搜索结果中检索每个公司名称。在检查带有公司名称的链接元素(例如:Facile.it,AGT international)时,我看到以下js脚本,显示了dt类名称

    <dt class="result-lockup__name">
    <a id="ember208" href="/sales/company/2429831?_ntb=zreYu57eQo%2BSZiFskdWJqg%3D%3D" class="ember-view">  Facile.it

    </a>    </dt>

我基本上想要检索这些名称并打开href中表示的url。

可以注意到,所有公司名称链接都具有相同的dt类result-lockup__name。以下脚本试图收集搜索结果中显示的所有公司名称及其元素的列表。

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from bs4 import BeautifulSoup
    import re
    import pandas as pd
    import os

    def scrap_accounts(url):

        url = "https://www.linkedin.com/sales/search/companycompanySize=E&geoIncluded=emea%3A0%2Ceurope%3A0&industryIncluded=6&keywords=AI&page=1&searchSessionId=zreYu57eQo%2BSZiFskdWJqg%3D%3D"
        driver = webdriver.PhantomJS(executable_path='C:\\phantomjs\\bin\\phantomjs.exe')
        #driver = webdriver.Firefox()
        #driver.implicitly_wait(30)
        driver.get(url)

        search_results = []
        search_results = driver.find_elements_by_class_name("result-lockup__name")
        print(search_results)

    if __name__ == "__main__":

        scrap_accounts("lol")

但是,结果会打印一个空列表。我正在努力学习抓取网页的不同部分和不同的元素,因此我不确定我是否正确。什么是正确的方法?

python selenium web-scraping beautifulsoup
1个回答
1
投票

我担心我无法进入您所追求的页面,但我注意到您正在进口美味的汤但不使用它。

尝试:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
import re
import pandas as pd
import os

url = "https://www.linkedin.com/sales/search/companycompanySize=E&geoIncluded=emea%3A0%2Ceurope%3A0&industryIncluded=6&keywords=AI&page=1&searchSessionId=zreYu57eQo%2BSZiFskdWJqg%3D%3D"

def scrap_accounts(url = url):

    driver = webdriver.PhantomJS(executable_path='C:\\phantomjs\\bin\\phantomjs.exe')
    #driver = webdriver.Firefox()
    #driver.implicitly_wait(30)
    driver.get(url)

    html = driver.find_element_by_tag_name('html').get_attribute('innerHTML')

    soup = BeautifulSoup(html, 'html.parser')
    search_results = soup.select('dt.result-lockup__name a')
    for link in search_results:
        print(link.text.strip(), link['href'])
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.