python - 使用 dt 类名 selenium python 打印元素
问题描述
我正在尝试为Linkedin 中的 Sales Navigator编写一个简单的刮板,这是我要刮的链接。它具有为帐户结果选择的特定过滤器选项的搜索结果。
我试图实现的目标是检索搜索结果中的每个公司名称。在检查带有公司名称的链接元素(例如: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")
但是,结果会打印一个空列表。我正在尝试学习抓取网页的不同部分和不同的元素,因此我不确定我是否正确。什么是正确的方法?
解决方案
恐怕我无法访问您所追求的页面,但我注意到您正在导入漂亮的汤,但没有使用它。
尝试:
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'])
推荐阅读
- python - Pyspark,我应该多久创建一次新的 Spark 会话?
- google-chrome - IText 生成的 PDF 未在 Chrome 中显示
- wordpress - 第二分类不显示在前端
- parsing - Rascal:用多个“_”解析字符串
- mysql - 显示一个表的结果并在另一列中查找
- java - Quartz Scheduler 远程实例的问题
- c - 编程 linux C 客户端-服务器。客户端未接收数据。本地主机
- android - Android 上的应用程序的 NDK 内存限制是多少?
- swift - 为什么 Singleton 会捕获自己的实例?
- javascript - 将道具解析为应在表格中呈现道具的组件时,道具为空