[英]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.