【问题标题】:Print elements using dt class name selenium python使用 dt 类名 selenium python 打印元素
【发布时间】:2019-08-03 05:55:46
【问题描述】:

我正在尝试为 Linkedin 中的 Sales Navigator 编写一个简单的 scraper,这是我正在尝试 scrapelink。它具有为帐户结果选择的特定过滤器选项的搜索结果。

我要达到的目标是检索搜索结果中的每个公司名称。检查带有公司名称的链接元素(例如:Facile.it、AGT 国际)后,我看到以下 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 scrape_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__":

        scrape_accounts("lol")

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

【问题讨论】:

    标签: python selenium web-scraping beautifulsoup


    【解决方案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 scrape_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'])
    

    【讨论】:

    • 我很抱歉。我注意到我使用该帐户中的 ID 和密码登录。
    • 我认为第一个错误在于浏览器会话启动时没有登录
    • 我也遇到了登录问题,正如在这个问题中发布的stackoverflow.com/questions/55128400/…
    • 是的,答案已调整,抱歉
    • 让我们在你开始的聊天中这样做?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 2012-06-19
    • 2018-07-28
    相关资源
    最近更新 更多