python - 使用 Selenium 抓取 LinkedIn 个人资料信息
问题描述
我正在尝试从 LinkedIn 抓取个人资料,我从下面的代码中获取个人资料 URL,并希望将其传递给 driver.get(URL),但是当我抓取 URL 时,URL 的格式是不同的,例如它在 [] 括号中和我收到这个错误
selenium.common.exceptions.InvalidArgumentException:消息:无效参数:“url”必须是字符串
您能否建议如何在列表linklist = [ ]中获取正确格式的 URL,以便我可以将它们传递给driver.get(URL)。谢谢!
options = Options()
options.add_argument("--start-maximized")
options.headless = True
url = "https://www.linkedin.com/login?fromSignIn=true&trk=guest_homepage-basic_nav-header-signin"
driver = webdriver.Chrome(path, options=options)
driver.get(url)
driver.find_element_by_id('username').send_keys('name')
driver.find_element_by_id('password').send_keys('password', Keys.ENTER)
driver.implicitly_wait(10)
driver.find_element_by_class_name('search-global-typeahead__input').send_keys('Marketing manager', Keys.ENTER)
driver.implicitly_wait(10)
driver.find_element_by_xpath('//button[text()="People"]').click()
x = 0
profile = []
linklist = []
condition = True
while condition:
sleep(2)
driver.execute_script("window.scrollTo(0, 1400);")
driver.implicitly_wait(10)
linkedin_members = driver.find_elements_by_xpath('//span[@class="entity-result__title"]')
links = [linkedin_member.find_element_by_xpath('.//a[@class="app-aware-link"]').get_attribute('href') for linkedin_member in linkedin_members if "/in/" in linkedin_member.find_element_by_xpath('.//a[@class="app-aware-link"]').get_attribute('href')]
x = x + 1
linklist.append(link for link in links)
driver.implicitly_wait(10)
driver.find_element_by_xpath("""//button[@class='artdeco-pagination__button artdeco-pagination__button--next artdeco-button artdeco-button--muted artdeco-button--icon-right artdeco-button--1 artdeco-button--tertiary ember-view' and contains(.,'Next')]""").click()
if x == 2:
condition = False
profile = []
for l in tqdm(linklist):
driver.get(l)
解决方案
我使用for循环代替您使用的while循环,因为没有可变条件,您只想执行两次循环。
以下是您的操作方法:
linklist = []
for i in range(2):
time.sleep(2)
driver.execute_script("window.scrollTo(0, 1400);")
driver.implicitly_wait(10)
linkedin_members = driver.find_elements_by_xpath('//span[@class="entity-result__title"]')
link = driver.find_element_by_class_name('app-aware-link').get_attribute('href')
linklist.append(link)
driver.implicitly_wait(10)
driver.find_element_by_xpath("""//button[@class='artdeco-pagination__button artdeco-pagination__button--next artdeco-button artdeco-button--muted artdeco-button--icon-right artdeco-button--1 artdeco-button--tertiary ember-view' and contains(.,'Next')]""").click()
for url in linklist:
driver.get(url)
我搜索了包含配置文件 url 的类并使用“ .get_attribute('href') ”来提取 url。
推荐阅读
- haskell - 了解 Haskell 类型签名
- angular9 - 羽毛笔编辑器:检查 Angular 中内容的变化?
- django - 每次使用 django-graphql-jwt 生成新令牌时,如何撤销 JWT?
- boto3 - aiobotocore s3 文件上传似乎事情没有通过
- java - 为什么 grails 编译命令显示:compileJava NO-SOURCE
- windows - Windows 中的 jq 命令未按预期工作
- python - 如何将 InputDialog 的输入打印到对话框本身?
- javascript - 如何更改 index.html 中正文的背景颜色?
- javascript - Leafletjs - 模拟/触发点击“mymap”
- asp.net-mvc-4 - 如何从 Kendo.Grid 的 ClientTemplate 内部向 JavaScript 函数发送参数?