为什么用get attribute src 不能得到正确的url,没有加上后面的mathrom,应该怎么修改
引用 皆我百晓生 小程序回复内容作答:
问题可能出在selenium获取到的元素上,可能是因为元素本身的src属性值并不是一个完整的URL,而只是一个相对路径。所以,获取src属性后,需要将其转换为完整的URL。
可以通过以下步骤来实现:
获取元素的src属性值。使用get_attribute('src')
方法来获取src属性值,例如:src_value = element.get_attribute('src')
。
检查src属性值是否是一个相对路径。你可以使用urlparse
模块来判断src属性值是否是相对路径。如果是相对路径,则进行下一步的处理。
将相对路径转换为完整的URL。你可以使用urllib.parse.urljoin
方法将相对路径转换为完整的URL,例如:full_url = urllib.parse.urljoin(base_url, src_value)
,其中base_url
是页面的基本URL。
完整的示例代码如下:
import urllib.parse
# 获取元素的src属性值
src_value = element.get_attribute('src')
# 检查src属性值是否是相对路径
if not src_value.startswith('http'):
# 获取页面的基本URL
base_url = driver.current_url
# 将相对路径转换为完整的URL
full_url = urllib.parse.urljoin(base_url, src_value)
else:
# src属性值已经是完整的URL
full_url = src_value
print(full_url)
通过这种方式,你应该能够获取到正确的URL,包括后面的"matherom"部分。
【以下回答由 GPT 生成】
问题描述中的代码大致上是正确的,只是可能存在一些细微的问题。以下是一些建议和可能的解决方案:
首先,关于获取图片链接的问题。get_attribute('src')
方法应该是可以正确获取到图片链接的,但是在少数情况下可能会有问题。首先,你可以尝试查看图片元素的属性列表,以确保src
属性是否存在。你可以使用get_attribute
方法来获取整个img
标签的属性列表,然后查看其中的src
属性是否存在。代码如下:
img_attributes = img_element.get_attribute('outerHTML')
print(img_attributes)
如果src
属性确实存在,那么可能是因为网站的反爬虫机制导致无法获取到完整的图片链接。在这种情况下,你可以尝试使用其他属性来获取完整的图片链接。例如,有些网站会使用data-src
或data-original
属性来存储图片链接。你可以尝试使用get_attribute
方法获取这些属性的值,看是否能够获取到完整的图片链接。代码如下:
img_src = img_element.get_attribute('data-src') or img_element.get_attribute('data-original')
print(img_src)
如果以上方法都无法获取到完整的图片链接,那么可能需要进一步分析网站的源代码,找到存储图片链接的具体属性。你可以使用开发者工具或查看网页源代码来寻找相关信息。
接下来,关于在循环中获取每个图片的链接的问题。你可以使用Selenium提供的find_elements_by_css_selector
方法来获取一组符合条件的元素。你可以使用任何有效的CSS选择器作为参数来定位多个图片元素。然后,你可以使用get_attribute
方法来获取每个元素的图片链接。代码如下:
# 创建webdriver实例
driver = webdriver.Chrome()
# 打开网页
driver.get('https://example.com')
# 定位图片元素列表
img_elements = driver.find_elements_by_css_selector('.md_img')
# 遍历图片元素列表
for img_element in img_elements:
# 获取图片链接
img_src = img_element.get_attribute('src')
# 输出图片链接
print(img_src)
这样,你就可以获取到每个图片的链接并进行进一步的处理了。
总结一下,如果你无法获取到正确的图片链接,并且以上的建议和解决方案都无效,那么可能是因为网站的反爬虫机制或其他复杂的原因导致无法获取到完整的图片链接。在这种情况下,你可能需要进一步分析网站的源代码或使用其他技术手段来解决该问题。