首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Nokogiri返回链接的奇怪hrefs?

Nokogiri是一个用于解析和操作HTML/XML文档的Ruby库。它提供了一组强大的工具和方法,使开发人员能够轻松地从HTML/XML文档中提取所需的信息。

在使用Nokogiri解析HTML文档时,有时会遇到一些奇怪的hrefs链接。这可能是由于以下原因导致的:

  1. 相对路径问题:有时,HTML文档中的链接可能是相对路径,而不是完整的URL。这意味着链接的href属性只包含了相对于当前页面的路径,而不是完整的URL。在处理这些链接时,我们需要根据当前页面的URL来构建完整的链接。
  2. 错误的HTML结构:有时,HTML文档可能包含错误的标签嵌套或不完整的标签,这可能导致Nokogiri解析链接时出现奇怪的结果。在这种情况下,我们需要检查HTML文档的结构,并尝试修复任何错误。
  3. 动态生成的链接:某些网站使用JavaScript或其他技术动态生成链接。这些链接可能在页面加载后才会出现,而不是在HTML文档中静态存在。在这种情况下,我们可能需要使用其他工具或技术来模拟页面加载,并提取动态生成的链接。

针对这些奇怪的hrefs链接,我们可以采取以下方法来处理:

  1. 使用URI库解析链接:可以使用Ruby的URI库来解析链接。URI库提供了一组方法,可以将相对路径转换为完整的URL,并处理其他与链接相关的操作。通过使用URI库,我们可以确保获得正确的链接。
  2. 检查HTML结构:在遇到奇怪的hrefs链接时,我们应该检查HTML文档的结构,确保没有错误的标签嵌套或不完整的标签。可以使用Nokogiri提供的方法来检查和修复HTML结构。
  3. 使用其他工具或技术:如果链接是动态生成的,我们可以考虑使用其他工具或技术来模拟页面加载,并提取动态生成的链接。例如,可以使用Selenium WebDriver来模拟浏览器行为,并提取动态生成的链接。

总结起来,处理Nokogiri返回的奇怪hrefs链接需要注意相对路径问题、检查HTML结构以及使用其他工具或技术来处理动态生成的链接。通过这些方法,我们可以更好地解析和处理HTML文档中的链接。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

一个奇怪链接问题

前言 链接是代码生成可执行文件中一个非常重要过程。我们在使用一些库函数时,有时候需要链接库,有时候又不需要,这是为什么呢?了解一些链接基本过程,能够帮助我们在编译时解决一些疑难问题。...比如,下面就有一种奇怪现象。 一个奇怪链接问题 程序功能很简单,计算en次方。...2.什么时候需要链接? 事实上,C编译器总是主动传送libc.a或libc.so给链接器,也就是说,对于使用包含在libc.a或libc.so库中函数,是不需要在编译时手动链接。...这个就涉及到链接工作原理了,在此只简单说明一下:链接过程中,需要进行符号解析,并且是按照顺序解析;如果库链接在前,就可能出现库中符号不会被需要,链接器不会把它加到未解析符号集合中,那么后面引用这个符号目标文件就不能解析该引用...因此链接一般准则是将它们放在命令行结尾。 总结 通过前面的实例和分析,我们总结出以下几点: 调用包含于libc库中函数不需要链接

1.6K20

奇怪Java题:为什么128 == 128返回为false,而127 == 127会返回为true?

奇怪Java题:为什么128 == 128返回为false,而127 == 127会返回为true? 在回答这个问题之前,我们先来看看int和Integer对比,一步步揭开问题答案。...实际是对象引用,指向此newInteger对象;int是直接存储数据值 ; (4) Integer默认值是null;int默认值是0。...基本类型(原始数据类型)在传递参数时都是按值传递,而封装类型是按引用传递(其实“引用也是按值传递”,传递是对象地址)。 由于包装类型都是不可变量,因此没有提供改变它值方法。...2. int与Integer深入对比 注:对于引用类型变量,==操作符比较是两个引用是否指向同一个对象;对于基本类型变量,==操作符比较是两个变量值是否相等。...(1) 由于Integer变量实际上是对一个Integer对象引用,所以两个通过new生成Integer变量永远是不相等

2.2K31
  • 奇怪知识增加了,如何让 (a == 1 && a == 2 && a == 3) 返回 true

    a == 3 这个表达式返回 true ?。...+A 结果与 B 严格相等 操作数 A 类型为 Boolean,并且调用 +A 结果与 B 严格相等 操作数 A 类型为 Object,并且调用 toString 或者 ValueOf 返回结果与...方法,在这个方法内部,我们每次增加另一个变量值并返回,就能够在这条表达式中使得 a 结果有不同值。...; } 同样,Proxy 对象默认 toString 和 valueOf 方法会返回这个被 getter 劫持过结果,也能够在宽松相等条件下满足题意。...在 ES5 之后,Object 新增 defineProperty 方法,它会直接在一个对象上定义一个新属性,或者修改一个对象现有属性,并返回这个对象,对于定义这个对象有两种描述它状态,一种称之为数据

    1K30

    发现一个很奇怪现象,MyBaits insert方法一直返回-2147482646

    前几天在做项目demo时候,发现有一个很奇怪现象,就是MyBatis发现更新和插入返回值一直为"-2147482646",无论怎么改,这个值一直不变......> 这么一改果然好使,但是为啥会返回这个奇怪数字呢...千呼万唤始出来,这个奇怪数字原来在这里出来,其中可以看到它是固定返回,没有任何判断逻辑...这样就证明了一点,只要你insert方法在配置文件中配置是batch,那么它肯定返回这个值!...我找到了SimpleStatementHandlerupdate方法,可以看到它返回是statement.getUpdateCount返回数字,也就是实际影响行数,那么就是正常数值。...总结 本篇博客记录了一次源码追踪过程,从而解释了为什么配置BATCH返回是这个数字原因,在实际编程中,可能会遇到很多奇怪问题,这时候就要敢于翻源码,答案一定在源码中,才能从根本上知道产生问题原因

    56020

    Ruby脚本:自动化网页图像下载实践案例

    此外,RubyNokogiri库也为我们提供了解析HTML和XML文档能力,这对于提取网页中图像链接至关重要。准备工作在开始编写脚本之前,我们需要确保已经安装了Ruby环境以及必要库。...这可以通过Ruby包管理器gem来完成:bashgem install mechanize nokogiri实践案例分析自动化网页图像下载基本流程包括以下几个步骤:1设置代理(可选):如果需要通过代理服务器访问网页...3提取图像链接:使用Nokogiri库解析网页内容,提取所有图像链接。4下载图像:遍历所有图像链接,使用Mechanize库下载图像并保存到本地。...4提取图像链接:使用Nokogiri::HTML解析网页内容,并通过css方法提取所有img标签src属性,即图像链接。...5下载图像:遍历所有图像链接,对于每个链接,我们检查它是否是一个完整URL(以http开头)。如果是,我们使用agent.get方法下载图像,并使用save方法保存到本地指定路径。

    11610

    痞子衡嵌入式:一个奇怪Keil MDK下变量链接强制对齐报错问题(--legacyalign)

    大家好,我是痞子衡,是正经搞技术痞子。今天痞子衡给大家分享是一个奇怪Keil MDK下变量链接强制对齐报错问题。   ...EMPTY Heap_Size { } ARM_LIB_STACK m_data_start+m_data_size EMPTY -Stack_Size { } }   编译工程得到一个如下图所示奇怪链接错误...4字节对齐,在链接分配时需要插入一些填充空间来满足区内段特殊对齐需求,链接器在处理填充时有两个策略: 严苛策略--no_legacyalign(默认):指示链接器插入填充以强制执行区首地址自然对齐,...读到这里,我们好像找到了一开始报错原因,就是默认--no_legacyalign捣鬼,链接器应该根据LR_m_text区首地址按qh_buffer对齐要求来填充,但实际上链接器却直接撂挑子不干了,...至此,一个奇怪Keil MDK下变量链接强制对齐报错问题痞子衡便介绍完毕了,掌声在哪里~~~

    64610

    前端js上传文件到COS对象存储后获取返回对象链接方法

    项目开发过程中往往会遇到前端js上传文件到COS对象存储没有返回对象链接情况,今天跟大家分享一个CORS配置小技巧 由于COS上传密钥放在前端不安全,我们使用腾讯云生产临时密钥配置在前端,通过前端...js sdk上传文件到COS对象存储,在不做任何配置情况下,COS返回信息只有Status Code和headers信息 image.png 如果我们想直接获取到上传成功文件链接,需要在COS控制台...--找到相应存储桶--基础配置--跨域访问CORS设置中, 添加如下规则: 来源Origin 操作Methods Expose-Headers 超时Max-Age * PUT...GET POST DELETE HEAD Etag Content-Length x-cos-request-id 5 image.png 保存后重新通过JS SDK上传,此时就会返回上传成功后文件链接

    13.2K11

    Python爬取365好书中小说代码实例

    需要转载小伙伴转载后请注明转载地址 需要用到库 from bs4 import BeautifulSoup import requests import time 365好书链接:http://www...NovelId=3026 获取小说每个章节名称和章节链接 打开浏览器开发者工具,查找一个章节:如下图,找到第一章名称和href(也就是第一章节内容页面的链接),开始写代码 ?...hrefs=[] # 存储章节链接 for i in s: names.append(i.find('span').string) hrefs.append(url + i.get('href...')) # 将所有的章节和章节链接存入列表中 观察href后链接和打开章节内容页面的链接是不完全相同, 所以要拼接使得浏览器能直接打开章节内容 获取到链接和章节名后打开一个章节获取文本内容; 和获取章节名方法一致...text = [] for each in p: text.append(each.string) print(text) return text # 将获得内容返回

    51740

    爬取《The Hitchhiker’s Guide to Python!》python进阶书并制成pdf

    这是日常学python第15篇原创文章 前几篇文章我们学习了requests库和正则,还有个urllib库,我上篇文章也用了requests库来教大家去爬那些返回json格式网页,挺好玩。...可以看到首页中有整本书内容链接,所以可以直接爬首页获取整本书链接。 熟练地按下f12查看网页请求,非常容易找到这个 ?...请求网站为:http://pythonguidecn.readthedocs.io/zh/latest/ 请求方式为get,状态码为200,而且返回是html元素,所以我们可以用正则来匹配所需要内容...(self): '''获取书本所有链接''' response = requests.get(self.url, self.headers) if response.status_code...__get_hrefs() content = self.

    979170

    小程序上传多张图片到springboot后台,返回可供访问图片链接

    最近在做小程序多图片上传到Java后台,Java后台是用springboot写。也算是踩了不少坑,今天就来带大家来一步步实现小程序端多图片上传。...首先看效果实现图 小程序端上传成功回调 [1240] Java端接受到图片后打印 [1240] 链接可以直接在浏览器里打开查看 [1240] 其实这两个截图就可以看出,我们图片上传成功了,并且给小程序前端返回了可供访问图片...到这里,我们小程序多图片上传就算大工告成了,后面我会录制相关视频出来,感兴趣同学可以关注“编程小石头”公众号,回复“多图片上传”,即可获取源码。...下面把完整代码贴出来给到大家 1,springboot对外提供接口供小程序访问 2,小程序上传单个图片和额外参数给后台 3,后台把图片写到本地,或者图片服务器,然后返回对应图片url给到小程序端。...[1240] 通过上图可以看出,Java后台返回了对应图片url给前端,并且可以拿到小程序前端传用户名。 我这里把完整代码贴给大家。

    1.7K00

    小程序上传多张图片到springboot后台,返回可供访问图片链接

    最近在做小程序多图片上传到Java后台,Java后台是用springboot写。也算是踩了不少坑,今天就来带大家来一步步实现小程序端多图片上传。 首先看效果实现图 小程序端上传成功回调 ?...Java端接受到图片后打印 ? 链接可以直接在浏览器里打开查看 ? 其实这两个截图就可以看出,我们图片上传成功了,并且给小程序前端返回了可供访问图片url。 话不多说,直接看代码。...2,js文件 再来看下js文件,js文件里最重要就是uploadFile方法 ? uploadFile方法里我们请求自己Java后台接口,进行图片上传。...return filePath; } 这里我给大家讲下实现步骤 1,springboot对外提供接口供小程序访问 2,小程序上传单个图片和额外参数给后台 3,后台把图片写到本地,或者图片服务器,然后返回对应图片...通过上图可以看出,Java后台返回了对应图片url给前端,并且可以拿到小程序前端传用户名。 我这里把完整代码贴给大家。

    2.1K20

    一个简单图片爬虫,Python图片采集下载

    一个非常简单图片爬虫,通过一个页面的链接采集,然后访问单页面获取想要大图,实现采集下载目的,比较简单,由于是国外网站,访问会比较慢,推荐使用代理工具来实现。...想要获取链接有两个节点 节点一 ? xpath语法 hrefs=req.xpath('//p[@class="data-import-preserve"]/a/@href') 节点二 ?...xpath语法 hrefs=req.xpath('//b[@class="data-import-preserve"]/a/@href') 通过以上两个节点应该能够获取到所有链接了,不过需要注意过滤一些无效链接...图片下载超时处理 图片下载,做了一下超时处理,很简单写法,try except处理,仅供参考。 爬取效果 ? 采集效果 ? 下载效果 ?...=req.xpath('//b[@class="data-import-preserve"]/a/@href') print(len(hrefs)) return hrefs def

    1.2K20

    快速入门网络爬虫系列 Chapter08 | 使用Python库抽取

    Xpath是一种查看XML文档内容路径语言,定位文档中节点位置 获取网页标题中a标签内容: //div//li//a/text() hrefs = page.xpath("//div//li//...a/text()") print() for href in hrefs: print(href) 1、获取网页中所有链接(绝对链接和相对链接) 以百度百科为例: import requests from...上面取出了百度百科中所有链接。 得出链接包括绝对链接和相对链接。...2、获取网页内部所指向链接 import requests from lxml import etree s=requests.session() s.headers = {'User-Agent'...+标签名字定位标签方法,只能选择第一个满足条件节点 Find_all()方法能返回所有满足条件标签列表 find_all(name,attrs,recursive,text,**kwargs)

    1.9K20

    Python抓取海量面经,直面秋招

    在上图页面中我们可以获取每个公司对应href链接。利用简单XPath即可得到各个企业链接,企业名字以及该企业面经数量。 我们先进入阿里巴巴面经页面,并进行翻页观察url链接变化。...type=2&order=0&pageSize=30&expTag=0&query=&page=2 发现截至type=2便是之前获得href链接。而后面的链接参数可以根据其英文来理解。...显然,控制翻页参数应该是page,其他参数应该不是必要。正所谓实践是检验真理唯一标准,我们使用获取href链接只加上page参数尝试一下,果真如此。 ?...接下来要做事便是获取每一份面经内容,并保存在本地。根据当前网页源代码,我们还是利用简洁高效XPath便可以得到面经标题和其链接。...def get_article(self,enterprise_name,hrefs,titles): for i in range(len(hrefs)):

    50110
    领券