Python Selenium:无法在 <time> 标签中从 Instagram 获取 HREF 链接

Posted

技术标签:

【中文标题】Python Selenium:无法在 <time> 标签中从 Instagram 获取 HREF 链接【英文标题】:Python Selenium: Can't Get HREF Link Off Instagram in <time> tags 【发布时间】:2021-05-20 02:32:43 【问题描述】:
PostLinkExtraction = driver.find_element_by_xpath("//article[1]/div[3]/div[1]/div/div[2]/div[1][*[local-name()='a']]").get_attribute('href')
print (PostLinkExtraction)

我试图在我的 Instagram 时间轴上的第一个帖子下打印来自 Instagram 时间戳的 href 链接。上面的代码由于某种原因没有返回。下面是任何想要运行它并查看我可能出错的地方的代码,但我想要完成的总体目标是从 标记中提取 href 链接。下面是 标签在开发者工具中的位置的图片

from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from time import sleep
from selenium.webdriver.common.keys import Keys
from selenium import webdriver

user = 'username'
passw = 'password'



driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('https://www.instagram.com/')
driver.implicitly_wait(10)

driver.find_element_by_name('username').send_keys(user)
driver.find_element_by_name('password').send_keys(passw)
Login = "//button[@type='submit']"
sleep(2)
driver.find_element_by_xpath(Login).submit()
sleep(1)
# Logs into Instagram
print ('Logged In')

#------------------------ATTENTION

NotNow = "//button[contains(text(),'Not Now')]"
driver.find_element_by_xpath(NotNow).click()
# Clicks Pop Up
print ('Close Pop Up')

# It's weird but the pop up opens once, only after this page.
# If ever a problem delete one, or have the first click be
# directed to your Instagram Profiles timeline

NotNow = "//button[contains(text(),'Not Now')]"
driver.find_element_by_xpath(NotNow).click()
#Clicks Pop Up; Comment out the line above if it causes an error
print ('Close Pop Up')

#-----------------------------------



driver.refresh()
print ('refreshing')
driver.implicitly_wait(10)
PostLinkExtraction = driver.find_element_by_xpath("//article[1]/div[3]/div[1]/div/div[2]/div[1][*[local-name()='a']]").get_attribute('href')
print (PostLinkExtraction)

【问题讨论】:

时间没有你想要a标签的href值。或者您的意思是 .text aka 4 小时。 它确实有一个 href 值。 a 标签内。几乎找到了解决方案,但取决于帖子的新程度,xpath 会发生一些变化。 【参考方案1】:

我发现问题出在你的 xpath 上。修复它,您将打印出您的第一篇文章的 href。

PostLinkExtraction = driver.find_element_by_xpath("//article[1]/div[3]/div[1]/div/div[2]/div[1]/a").get_attribute('href')
print (PostLinkExtraction)

结果:

【讨论】:

这绝对有帮助,几乎找到了解决方案,但取决于帖子的新程度,xpath 会发生一些变化。这是一篇相当新的帖子的 xpath - //*[@id="react-root"]/section/main/section/div[1]/div[2]/div/article[1]/div[3 ]/div[2]/a - 看看我是否可以使用 id 或 class 来配合它【参考方案2】:

简短答案:停止使用 xpath 并以这种方式找到您正在寻找的元素: 1 - 将所有具有相同标签的元素放入一个数组中

2 - 搜索使其唯一的两三个属性

3-在数组中循环提取并使用它

简单、快速、干净。

【讨论】:

以上是关于Python Selenium:无法在 <time> 标签中从 Instagram 获取 HREF 链接的主要内容,如果未能解决你的问题,请参考以下文章

无法在 python selenium 中使用 selenium chrome webdriver 定位元素

无法使用 Selenium 和 Python 从 <select> 中选择任何 <options>

Selenium 在使用 Python 时无法单击“获取数据”按钮

无法从 Selenium 和 Python 的下拉菜单中选择

无法通过 Selenium for Python 定位按钮

无法获取元素 SELENIUM PYTHON