首页 > 解决方案 > 如何从间接 URL 获取直接 URL?Python 网页抓取

问题描述

我正在尝试根据谷歌搜索来抓取 URL。但是,我正在抓取的 URL 中有一个箭头,并且似乎是 Google 重定向页面:

'uk.linkedin.com › pauljgarner'

我想要的是直接链接:

https://www.linkedin.com/in/pauljgarner/?originalSubdomain=uk

这是我的代码。我不确定如何修改它以获得直接链接。非常感谢您的帮助。

from selenium import webdriver
driver = webdriver.Chrome('/Users/yu/Downloads/chromedriver')
driver.get('https:www.google.com')

##inputting google search##
search_query = driver.find_element_by_name('q')
search_query.send_keys(parameters.search_query)
search_query.send_keys(Keys.RETURN)

linkedin_urls = driver.find_elements_by_xpath(".//div[@class='TbwUpd NJjxre']")
linkedin_urls = [url.text for url in linkedin_urls]

for linkedin_url in linkedin_urls:
    driver.get(linkedin_url) 
    ##getting an error on this line (likely because the url is a redirect)

linkedin_url

我看过一些关于通过使用附加组件(Grease Monkey)将重定向链接转换为直接链接的帖子,但还没有弄清楚如何使用它们。更喜欢我可以修改代码的答案(如果可能的话)。谢谢

标签: pythonselenium

解决方案


找到合适的元素后,为什么不使用get_attribute()来查找href 链接。如果您只想要第一个 URL,则可以使用:

linkedin_urls=driver.find_elements_by_xpath('//*[@id="rso"]/div[1]/div/div/a')
linkedin_urls=[url.get_attribute('href') for url in linkedin_urls]

如果你想要所有的 URL:

linkedin_urls=driver.find_elements_by_xpath('//*[@id="rso"]/div/div/div/a')
linkedin_urls=[url.get_attribute('href') for url in linkedin_urls]

Python 中的 get_attribute()


推荐阅读