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

从html获取href属性会产生不想要的结果

是因为在实际开发中,href属性的值可能包含了一些不希望的内容或者格式不正确,导致获取到的结果不符合预期。

为了解决这个问题,可以采取以下几种方法:

  1. 数据过滤和验证:在获取href属性之后,对其进行数据过滤和验证,确保获取到的结果符合预期。可以使用正则表达式或其他验证方法来检查href属性的值是否合法,例如是否包含特殊字符、是否是合法的URL格式等。
  2. 使用专门的HTML解析库:使用专门的HTML解析库,如BeautifulSoup、Jsoup等,可以更方便地获取和处理HTML中的属性。这些库提供了丰富的API和方法,可以帮助我们准确地获取到想要的属性值,并且可以处理一些特殊情况,如相对路径转绝对路径等。
  3. 前端框架的支持:如果在前端开发中使用了一些流行的前端框架,如React、Vue等,可以利用它们提供的特性和方法来获取和处理HTML中的属性。这些框架通常提供了一些便捷的API和工具,可以帮助我们更轻松地操作DOM元素和属性。
  4. 后端处理:如果前端无法满足需求,也可以将获取href属性的操作放在后端进行处理。后端可以使用各种编程语言和框架来解析HTML,并提供API供前端调用。后端可以使用正则表达式、XPath等方法来提取和处理HTML中的属性。

总结起来,从HTML获取href属性会产生不想要的结果时,我们可以通过数据过滤和验证、使用专门的HTML解析库、前端框架的支持或者后端处理来解决这个问题。具体的解决方法可以根据实际情况选择合适的方式。

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

相关·内容

【web必知必会】—— 使用DOM完成属性填充

float浮动   1&2 获取设置元素对象的属性   前篇已经介绍过了,获取设置元素的属性,可以使用getAttribute()和setAttribute()两个方法:   在showPic()函数中...,通过传过来的对象,可以直接调用getAttribute获取属性href的链接内容,然后通过getElementById方法获取图片对象,并设置其src的属性值。...但是onClick事件,是要接收一个bool值,如果是true,则会默认的跳到另一个网页链接;相反,如果是false,则不会产生任何结果。   ...其中的原理,类似前面文章讲述的元素节点,属性节点和文本节点的关系,文本节点是该元素标签节点的一个子对象,因此无法用nodeValue直接获取标签的文本,而是需要获取它的孩子对象,才能得到nodeValue...5 float浮动   如果不设置img的CSS样式,会发现本来我们想要使ul中的li标签水平显示,结果在宽度足够的情况下,img也跟着水平显示了。   这是为什么呢?

96490
  • 爬虫——综合案例流程版

    init里编写 生成UserAgent对象,随机生成headers 保存初始网址 创建队列并放入初始网址 使用不同的队列会造成BFS和DFS的效果 使用先进先出队列产生广度优先搜索,使用先进后出(...:返回的是unicode 型的数据,一般是在网页的header中定义的编码形式,如果想要提取文本就用text; content:返回的是bytes,二级制型的数据;想要提取图片、文件,就要用到content...', query='x=123&y=789', fragment='13579') 从domains字典中get获取上次访问时间 通过ifelse计算还需等待的时间并睡眠(time.sleep)...-一次访问后保存本次访问到domains字典中 爬虫通用类封装run方法 执行流程 判断队列中是否存在待爬取的网址 判断爬取网址是否遵守robots约定,不遵守则跳出禁止下载 对当前爬取网址限流 获取当前的访问深度...判断当前访问深度是否在规定范围内 下载爬取网址得到爬取结果 判断爬取结果是否为空 爬取结果不为空则保存 获取出爬取结果里的所有链接 使用过滤器筛选出指点关键字的链接 for循环补全每个链接 补全同时判断链接是否访问过

    60040

    彻底解锁Html.Table函数,轻松实现源码级网页数据提取 | Power BI

    Step-01 从Web获取数据,输入网址后,即可看到按钮“使用示例添加表”: Step-02 填选内容与智能识别、填充 在“使用示例添加表”中,在下方的表格中,填写2-3项需要提取的信息后,Power...如果发现后续自动填充的内容不是自己想要的,那可以继续输入或选择,Power BI会随着选填的内容不断更新自动填充的内容,直到确认填充的内容是自己想要的后,单击“确定”按钮即可: Step-03 转换数据...,复制到文本文件里并修改扩展名为.html,用浏览器打开,代码对应的效果如下: 接下来我们看一下Html.Table后面的参数: 1、行筛选器:[RowSelector=".name"] 这个参数会决定提取结果中的...“行”数,其中“.name”表示:按照属性class为name的每一个网页元素产生每一行。...4),最终修改如下: 其中第2列取网页链接的代码中,使用了 第3个参数:each [Attributes][href],这就是对于不直接取元素对应的网页上显示信息,而是取相关属性的用法。

    1.5K41

    Python抓取壁纸

    安装库 在开始编写代码之前需要安装几个库 requests 可以发送请求的库 beautifulsoup4 可以从HTML或XML文件中提取数据的Python库 lxml 支持HTML和XML的解析,...所以这里不取下标0,使用循环来获取每个a标签属性href的值 运行结果 运行结果如下: 可以数数是不是获取到了12个详细页面的链接,然后点进去看看是不是与自己点进去的画面显示一致....# 获取href属性的值并添加到数组中 arr.append(domain + str(item['href'])) return arr if __name...因为我找了整个页面都没用找到第二个相同属性及值的元素 运行结果 运行结果如下(截取部分): 下载文件 下载链接都获取到了那么就可以获取文件的内容并写入到本地中 以下是main函数里面的代码: if _...# 获取href属性的值并添加到数组中 arr.append(domain + str(item['href'])) return arr if __name

    1.9K20

    数据获取:​网页解析之lxml

    如果你直接想要某一些元素,好比找到地名带“州”字的,也可以不需要从头开始,直接可以从元素位置查找,可以根据标签中特定的属性值来定位元素,但是这种写法通常是一个结果集。...('//*[@class="c1"]/a/text()') print(link) print(text) #代码结果: ['link1.html'] ['第一个链接'] 如果是想要获取标签内的属性值,...如果想要获取标签内的内容,那么用text()。返回的结果都是字符串对象的list集合。在获取“link1.html”的语法如下:“//*[@class="c1"]/a/@href”。...“/a”表示在上面的对象结果的子节点中选择a标签的节点。“/@href”表示选择的a标签中的href属性的值,同样,如果想要获取“title”标签中的内容,就是直接是@ title。...XPath验证 刚才我们通过浏览器获取到了正在热映的div,现在我们想要获取div中的电影名,要得到具体的信息,需要先分析下响应的HTML代码,确定出来从哪个标签中获取信息是最全的。

    30510

    XPath语法和lxml模块

    否则选择某节点下的某个节点 /bookstore 选取根元素下所有的bookstore节点 // 从全局节点中选择节点,随便在哪个位置 //book 从全局节点中找到所有的book节点 @ 选取某个节点的属性...通配符 描述 示例 结果 * 匹配任意节点 /bookstore/* 选取bookstore下的所有子元素。 @* 匹配节点中的任何属性 //book[@*] 选取所有带有属性的book元素。...lxml 基本使用: 我们可以利用他来解析HTML代码,并且在解析HTML代码的时候,如果HTML代码不规范,他会自动的进行补全。...lxml会自动修改HTML代码。例子中不仅补全了li标签,还添加了body,html标签。 从文件中读取html代码: 除了直接使用字符串进行解析,lxml还支持从文件中读取内容。...li/a//@class') print(result) 获取最后一个li的a的href属性对应的值: from lxml import etree html = etree.parse('hello.html

    1.2K30

    爬虫基础入门

    ,这是你就可以爬去相关商品的价格,做一个对比即可;就拿咱们人工智能方向来说吧,哪个不是通过庞大的数据产生的,那这些数据怎么来的?...但是我们想要的是'href='后的链接,这里hrefs相当于字典,因为'href'是a标签的以一个属性,可以把'href'当做key来查找: ? 结果为( 部分 ): ?...HTML一般都会和CSS一起搭配,所以有时候的数据选取会和CSS有关,总之CSS你只要知道它的class即可,根据class爬取数据。 我们先读取它的文本: ?...也就是通过查找标签为img,并且属性src符合 ? 的链接。 获取'href'链接也一样: ?...但是有的sub_urls没有符合要求的网页,这时候就需要向前跳一个,继续爬取。又因为百度百科词条的HTML大致满足这个要求: ? 则,代码为: ? 结果为: ? ----

    68380

    Python爬虫Xpath库详解

    那么,在页面解析时,利用 XPath 或 CSS 选择器来提取某个节点,然后再调用相应方法获取它的正文内容或者属性,不就可以提取我们想要的任意信息了吗? 在 Python 中,怎样实现这个操作呢?...所以说,如果要想获取子孙节点内部的所有文本,可以直接用 // 加 text 方法的方式,这样可以保证获取到最全面的文本信息,但是可能会夹杂一些换行符等特殊字符。...即可获取节点的 href 属性。...注意,此处和属性匹配的方法不同,属性匹配是中括号加属性名和值来限定某个属性,如 [@href="link1.html"],而此处的 @href 指的是获取节点的某个属性,二者需要做好区分。...第五次选择时,我们调用了 descendant 轴,可以获取所有子孙节点。这里我们又加了限定条件获取 span 节点,所以返回的结果只包含 span 节点而不包含 a 节点。

    27010

    Python3中BeautifulSoup的使用方法

    来对作区分,所以我们借助于它们的结构和属性来提取不也是可以的吗?...可以看到attrs的返回结果是字典形式,把选择的标签的所有属性和属性值组合成一个字典,接下来如果要获取name属性,就相当于从字典中获取某个键值,只需要用中括号加属性名称就可以得到结果了,比如获取name...子节点和子孙节点 选取到了一个节点元素之后,如果想要获取它的直接子节点可以调用contents属性,我们用一个实例来感受一下: html = """ html> <title...提取信息 在上面我们讲解了关联元素节点的选择方法,如果我们想要获取它们的一些信息,比如文本、属性等等也是同样的方法。...获取属性 我们知道节点类型是Tag类型,所以获取属性还是可以用原来的方法获取,仍然是上面的HTML文本,我们在这里尝试获取每个ul节点的id属性。

    3.1K50

    Python3中BeautifulSoup的使用方法

    ,都有一定的特殊的结构和层级关系,而且很多标签都有id或class来对作区分,所以我们借助于它们的结构和属性来提取不也是可以的吗?...可以看到attrs的返回结果是字典形式,把选择的标签的所有属性和属性值组合成一个字典,接下来如果要获取name属性,就相当于从字典中获取某个键值,只需要用中括号加属性名称就可以得到结果了,比如获取name...子节点和子孙节点 选取到了一个节点元素之后,如果想要获取它的直接子节点可以调用contents属性,我们用一个实例来感受一下: html = """ html> <title...提取信息 在上面我们讲解了关联元素节点的选择方法,如果我们想要获取它们的一些信息,比如文本、属性等等也是同样的方法。...获取属性 我们知道节点类型是Tag类型,所以获取属性还是可以用原来的方法获取,仍然是上面的HTML文本,我们在这里尝试获取每个ul节点的id属性。

    3.7K30

    使用python多进程爬取高清美图

    爬虫简单介绍 当我们打开一个网页,在上面发现一些了有用的信息之后,于是通过人工的方式从网页上一顿操作将信息记录起来,而通过爬虫,则可以利用一些设定好的规则以及方法来自动的从该网页上获取信息,总而言之就是解放双手...3.1.4 获取某个标签里的某个属性 soup.p['class'] 执行结果 ['title'] 3.2 使用Tag对象 Tag对象跟原生的 xml 或者 html 中的 tag(标签)相同,可以直接通过对应的名称来获取...对象还有俩比较重要的属性:name和string,我们先通过结果来看下这俩属性的作用 soup = BeautifulSoup(html_doc, 'html.parser') t = soup.a print...3.3 查找文档树 查找文档树比较重要,因为本文在爬取图片的时候,就是通过搜索指定标签来获取我想要的内容的。...,不会把所有页的图片都下载了,会做一个简单的判断,当总页数不超过 CPU 的核数的时候,会全部下载,否则,只会下载 CPU 核数对应的页数。

    98800

    Python爬虫 Beautiful Soup库详解

    这里需要注意的是,输出结果里面包含 body 和 html 节点,也就是说对于不标准的 HTML 字符串 BeautifulSoup,可以自动更正格式。...接下来,如果要获取 name 属性,就相当于从字典中获取某个键值,只需要用中括号加属性名就可以了。比如,要获取 name 属性,就可以通过 attrs['name'] 来得到。...子节点和子孙节点 选取节点元素之后,如果想要获取它的直接子节点,可以调用 contents 属性,示例如下: html = """ html> The...此时返回结果还是生成器。遍历输出一下可以看到,这次的输出结果就包含了 span 节点。descendants 会递归查询所有子节点,得到所有的子孙节点。...提取信息 前面讲解了关联元素节点的选择方法,如果想要获取它们的一些信息,比如文本、属性等,也用同样的方法,示例如下: html = """ html> <p class

    25610

    什么是XPath?

    XPath语法 使用方式: 使用//获取整个页面当中的元素,然后写标签名,然后在写谓语进行提取,比如: //title[@lang='en'] //标签[@属性名='属性值'] # 如果想获取html...谓词中下标是从1开始的,不是从0开始的 lxml库 lxml 是 一个HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML 数据。...,并且在解析HTML代码的时候,如果HTML代码不规范,他会自动的进行补全 from lxml import etree text = ''' 属性的值: # result = html.xpath('//li/@class') # print(result) # 获取li标签下href为www.baidu.com的a标签: # result...(result) # 获取最后一个li的a的href属性对应的值: # result = html.xpath('//li[last()]/a/@href') # print(result) # 获取倒数第二个

    1.7K20

    Python3网络爬虫实战-29、解析库

    前面我们介绍了正则表达式的相关用法,但是一旦正则写的有问题,可能得到的就不是我们想要的结果了,而且对于一个网页来说,都有一定的特殊的结构和层级关系,而且很多节点都有id或class来对作区分,所以我们借助于它们的结构和属性来提取不也是可以的吗...可以看到 attrs 的返回结果是字典形式,把选择的节点的所有属性和属性值组合成一个字典,接下来如果要获取 name 属性,就相当于从字典中获取某个键值,只需要用中括号加属性名称就可以得到结果了,比如获取...子节点和子孙节点 选取到了一个节点元素之后,如果想要获取它的直接子节点可以调用 contents 属性,我们用一个实例来感受一下: print(soup.p.contents) 运行结果: [The...提取信息 在上面我们讲解了关联元素节点的选择方法,如果我们想要获取它们的一些信息,比如文本、属性等等也是同样的方法。...获取属性 我们知道节点类型是 Tag 类型,所以获取属性还是可以用原来的方法获取,仍然是上面的 HTML 文本,我们在这里尝试获取每个 ul 节点的 id 属性。

    1.8K30

    Python爬虫 pyquery库详解

    此外,也可以通过调用 attr 属性来获取属性,用法如下: print(a.attr.href) 结果: link3.html 这两种方法的结果完全一样。...因此,在进行属性获取时,可以观察返回节点是一个还是多个,如果是多个,则需要遍历才能依次获取每个节点的属性。...html() 会返回什么内容?...所以这个地方值得注意,如果得到的结果是多个节点,并且想要获取每个节点的内部 HTML 文本,则需要遍历每个节点。而 text() 方法不需要遍历就可以获取,它将所有节点取文本之后合并成一个字符串。...text 和 html 方法如果不传参数,则是获取节点内纯文本和 HTML 文本;如果传入参数,则进行赋值。 remove 顾名思义,remove 方法就是移除,它有时会为信息的提取带来非常大的便利。

    25710

    Python3网络爬虫实战-28、解析库

    那么在页面解析时,我们利用 XPath 或 CSS 选择器来提取到某个节点,然后再调用相应的方法去获取它的正文内容或者属性不就可以提取我们想要的任意信息了吗?...所以说,如果我们要想获取子孙节点内部的所有文本,可以直接用 // 加 text() 的方式获取,这样可以保证获取到最全面的文本信息,但是可能会夹杂一些换行符等特殊字符。...href 属性,注意此处和属性匹配的方法不同,属性匹配是中括号加属性名和值来限定某个属性,如 [@href="link1.html"],而此处的 @href 指的是获取节点的某个属性,二者需要做好区分...()') print(result) 在这里 HTML 文本中的 li 节点的 class 属性有两个值 li 和 li-first,但是此时如果我们还想用之前的属性匹配获取就无法匹配了,代码运行结果:...按序选择 有时候我们在选择的时候可能某些属性同时匹配了多个节点,但是我们只想要其中的某个节点,如第二个节点,或者最后一个节点,这时该怎么办呢?

    2.3K20

    Python爬虫从入门到精通——解析库pyquery的使用「建议收藏」

    在这个方法中传入属性的名称,就可以得到这个属性值了。 link4.html 此外,也可以通过调用attr属性来获取属性: print(a.attr.href) 这两种方法的结果完全一样。....html 因此,在进行属性获取时,可以观察返回节点是一个还是多个,如果是多个,则需要遍历才能依次获取每个节点的属性。...所以这个地方值得注意,如果得到的结果是多个节点,并且想要获取每个节点的内部HTML文本,则需要遍历每个节点。而text()方法不需要遍历就可以获取,它将所有节点取文本之后合并成一个字符串。...text()和html()方法如果不传参数,则是获取节点内纯文本和HTML文本;如果传入参数,则进行赋值。...如果我们想去掉p节点内部的文本,可以选择再把p节点内的文本提取一遍,然后从整个结果中移除这个子串,但这个做法明显比较烦琐。

    69810
    领券