![](/img/trans.png)
[英]Scraping profiles with Python and the “scrape-linkedin” package
[英]Web Scraping Linkedin Profiles: Cannot pick all links
以下是正在使用的代碼:
linkedin_urls = driver.find_elements_by_class_name('r')
sub = 'linkedin.com'
for linkedin_url in linkedin_urls:
tag = linkedin_url.find_element_by_tag_name('a')
URL = tag.get_attribute('href')
if sub in URL:
try:
driver.get(URL)
sleep(5)
driver.back()
driver.get(URL)
except:
pass
回溯(最近一次調用最后一次):
文件“”,第 25 行,在 tag = linkedin_url.find_element_by_tag_name('a')
文件“C:\\Users\\deepankar.garg\\AppData\\Roaming\\Python\\Python37\\site-packages\\selenium\\webdriver\\remote\\webelement.py”,第 305 行,在 find_element_by_tag_name 中返回 self.find_element(by=By.TAG_NAME,值=名稱)
文件“C:\\Users\\deepankar.garg\\AppData\\Roaming\\Python\\Python37\\site-packages\\selenium\\webdriver\\remote\\webelement.py”,第 659 行,在 find_element {"using": by, "value":價值})['價值']
文件“C:\\Users\\deepankar.garg\\AppData\\Roaming\\Python\\Python37\\site-packages\\selenium\\webdriver\\remote\\webelement.py”,第 633 行,在 _execute 中返回 self._parent.execute(command, params)
文件“C:\\Users\\deepankar.garg\\AppData\\Roaming\\Python\\Python37\\site-packages\\selenium\\webdriver\\remote\\webdriver.py”,第321行,在執行self.error_handler.check_response(response)
文件“C:\\Users\\deepankar.garg\\AppData\\Roaming\\Python\\Python37\\site-packages\\selenium\\webdriver\\remote\\errorhandler.py”,第 242 行,在 check_response 中引發 exception_class(message, screen, stacktrace)
StaleElementReferenceException:過時的元素引用:元素未附加到頁面文檔(會話信息:chrome=79.0.3945.79)
以下是IF條件之前的輸出:
https://www.linkedin.com/in/elena-grewal
https://www.quora.com/What-is-the-difference-between-Data-Science-and-Analytics
https://www.edureka.co/blog/what-is-data-science/
以下是IF條件后的輸出:
https://www.linkedin.com/in/elena-grewal
https://in.linkedin.com/in/bsatya
https://www.linkedin.com/in/kylemckiou
我知道錯誤意味着什么,但我不知道如何解決它。 我只想在單獨的 Web 瀏覽器中以“if”(真)條件打開每個鏈接。 上面“IF 之后”條件中存在的鏈接是我希望在每個選項卡中打開的鏈接。
任何幫助將非常感激!
StaleElementReferenceException
當元素不再存在於 div 中或StaleElementReferenceException
出現。 在您導航到下一頁后返回 url 的場景中,當您嘗試再次訪問該元素時,該元素已過時。
要解決它,您需要在訪問它之前再次獲取該元素。
你可以這樣做:
linkedin_urls = driver.find_elements_by_class_name('r')
sub = 'linkedin.com'
while i < len(linkedin_urls):
tag = linkedin_urls[i].find_element_by_tag_name('a')
URL = tag.get_attribute('href')
i += 1
if sub in URL:
try:
driver.get(URL)
sleep(5)
driver.back()
driver.get(URL)
# Fetching the element again here
linkedin_urls = driver.find_elements_by_class_name('r')
except:
pass
最后!
我得到了解決方案。 以下是我嘗試過並且有效的方法:
all_urls = driver.find_elements_by_css_selector("div > a")
urls = []
for elem in all_urls:
text = elem.text
url = elem.get_property('href')
if "linkedin.com" in elem.text:
urls.append(url)
#print(urls)
for url in urls:
driver.get(url)
sleep(2)
print(url)
感謝大家的幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.