python - 如何从间接 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)将重定向链接转换为直接链接的帖子,但还没有弄清楚如何使用它们。更喜欢我可以修改代码的答案(如果可能的话)。谢谢
解决方案
找到合适的元素后,为什么不使用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]
推荐阅读
- typescript - 在二叉搜索树中查找左右高度
- sapui5 - 如何在同一个项目中使用 OpenUI5 自定义主题?
- php - CSRF 保护在 Laravel + Sanctum rest api 中不起作用
- node.js - 删除/裁剪 pdf 文档的边距 | 节点/Javascript
- python - 模拟高斯分数噪声
- vue.js - Vue 收到了一个组件,它是一个响应式对象
- python - 仅从 json 文件中提取 id 并将它们读入 csv
- macos - 禁用 cmd-R 以在 Mac 上的 Google Apps 脚本编辑器中执行脚本
- python - 合并 Pandas DataFrame DOWN 列
- django - django REST 中是否有内置的登录/注销端点?