简体   繁体   English

从 html 标签中提取字符串

[英]Extracting a string from a html tag

I want to get a string from div data-pair-id which is "14958"我想从 div data-pair-id 得到一个字符串,它是“14958”

This is my code:这是我的代码:

urlheader = {
    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36",
    "X-Requested-With": "XMLHttpRequest"
}

url = "https://www.investing.com/indices/nasdaq-composite"
req = requests.get(url, headers=urlheader)
soup = BeautifulSoup(req.content, "lxml")
x = soup.find('div', id="data-pair-id")

But x comes up blank.但是 x 出现空白。

What's wrong with my code?我的代码有什么问题?

import requests
from bs4 import BeautifulSoup
import re

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0'
}


def main(url):
    r = requests.get(url, headers=headers)
    soup = BeautifulSoup(r.content, 'html.parser')
    target = soup.find("div", {'data-pair-id': True}).get('data-pair-id')
    match = re.search(r'smlID = (.*?);', r.text).group(1)
    print(target)
    print(match)


main("https://www.investing.com/indices/nasdaq-composite")

Output: Output:

14958
2035293

On the given page, there are only two places data-pair-id was found.在给定的页面上,只有两个地方data-pair-id被发现。 For both divs, it was not the div's id but an attribute of the div whose value was 14958 .对于这两个 div,它不是 div 的 id,而是 div 的属性,其值为14958

So, given data-pair-id , you can find the attribute's value by finding the first div, passing another parameter specifying the attribute it must have.因此,给定data-pair-id ,您可以通过找到第一个 div 来找到属性的值,并传递另一个参数来指定它必须具有的属性。

divs = soup.find('div', {"data-pair-id": True})
print(divs.get('data-pair-id'))

See: https://stackoverflow.com/a/39055066/11890300请参阅: https://stackoverflow.com/a/39055066/11890300

从外部提取 HTML<div id="text_translate"><p> 我正在尝试提取位于&lt;table&gt;标签上方和下方的 HTML 部分,例如从下面的示例 html 中:</p><pre> sample_html = """ &lt;html&gt; &lt;title&gt;&lt;b&gt;Main Title&lt;/b&gt;&lt;/Title&gt; &lt;b&gt;more&lt;/b&gt; &lt;b&gt;stuff&lt;/b&gt; &lt;b&gt;in here:&lt;/b&gt; &lt;table class="softwares" border="1" cellpadding="0" width="99%"&gt; &lt;thead style="background-color: #ededed"&gt; &lt;tr&gt; &lt;td colspan="5"&gt;&lt;b&gt;Windows&lt;/b&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;Type&lt;/b&gt;&lt;/td&gt; &lt;td&gt;&lt;b&gt;Issue&lt;/b&gt;&lt;/td&gt; &lt;td&gt;&lt;b&gt;Restart&lt;/b&gt;&lt;/td&gt; &lt;td&gt;&lt;b&gt;Severity&lt;/b&gt;&lt;/td&gt; &lt;td&gt;&lt;b&gt;Impact&lt;/b&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;some item&lt;/td&gt; &lt;td&gt;&lt;a href="some website"&gt;some website&lt;/a&gt;&lt;br&gt;&lt;/td&gt; &lt;td&gt;Yes&lt;br&gt;&lt;/td&gt; &lt;td&gt;Critical&lt;br&gt;&lt;/td&gt; &lt;td&gt;stuff&lt;br&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;some item&lt;/td&gt; &lt;td&gt;&lt;a href="some website"&gt;some website&lt;/a&gt;&lt;br&gt;&lt;/td&gt; &lt;td&gt;Yes&lt;br&gt;&lt;/td&gt; &lt;td&gt;Important&lt;br&gt;&lt;/td&gt; &lt;td&gt;stuff&lt;br&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;b&gt;AGAIN&lt;/b&gt; &lt;b&gt;more&lt;/b&gt; &lt;b&gt;stuff&lt;/b&gt; &lt;b&gt;down here!&lt;/b&gt; &lt;/html&gt; """</pre><p> 我想获得类似的东西。</p><pre> top_html = """ &lt;html&gt; &lt;title&gt;&lt;b&gt;Main Title&lt;/b&gt;&lt;/Title&gt; &lt;b&gt;more&lt;/b&gt; &lt;b&gt;stuff&lt;/b&gt; &lt;b&gt;in here!&lt;/b&gt; &lt;/html&gt; """ bottom_html = """ &lt;html&gt; &lt;b&gt;AGAIN&lt;/b&gt; &lt;b&gt;more&lt;/b&gt; &lt;b&gt;stuff&lt;/b&gt; &lt;b&gt;down here!&lt;/b&gt; &lt;/html&gt; """</pre><p> 或者已经是文本格式,例如:</p><pre> top_html = 'Main Title more stuff down here!' bottom_html = 'AGAIN more stuff down here!'</pre><p> 所以我已经能够从整个 HTML 中提取&lt;table&gt;部分并进行处理(我将行&lt;tr&gt;和列&lt;td&gt;分开,以便我可以提取我需要的值),使用以下代码:</p><pre> soup = BeautifulSoup(input_html, "html.parser") table = soup.find('table')</pre></div>标签<table> </table> - Extracting HTML from outside the <table> tag

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 php从html字符串中提取第一个图像,删除所有图像标签,并截断html字符串 - php extracting first image from html string, remove all images tag, and truncate html string 从HTML源提取字符串 - Extracting String from HTML source 从 html 文本中提取字符串 - Extracting string from html text jQuery从html标记中提取属性ID - jQuery extracting attribute id from html tag 从<script> tag in html - Extracting a var from <script> tag in html 从外部提取 HTML<div id="text_translate"><p> 我正在尝试提取位于&lt;table&gt;标签上方和下方的 HTML 部分,例如从下面的示例 html 中:</p><pre> sample_html = """ &lt;html&gt; &lt;title&gt;&lt;b&gt;Main Title&lt;/b&gt;&lt;/Title&gt; &lt;b&gt;more&lt;/b&gt; &lt;b&gt;stuff&lt;/b&gt; &lt;b&gt;in here:&lt;/b&gt; &lt;table class="softwares" border="1" cellpadding="0" width="99%"&gt; &lt;thead style="background-color: #ededed"&gt; &lt;tr&gt; &lt;td colspan="5"&gt;&lt;b&gt;Windows&lt;/b&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;Type&lt;/b&gt;&lt;/td&gt; &lt;td&gt;&lt;b&gt;Issue&lt;/b&gt;&lt;/td&gt; &lt;td&gt;&lt;b&gt;Restart&lt;/b&gt;&lt;/td&gt; &lt;td&gt;&lt;b&gt;Severity&lt;/b&gt;&lt;/td&gt; &lt;td&gt;&lt;b&gt;Impact&lt;/b&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;some item&lt;/td&gt; &lt;td&gt;&lt;a href="some website"&gt;some website&lt;/a&gt;&lt;br&gt;&lt;/td&gt; &lt;td&gt;Yes&lt;br&gt;&lt;/td&gt; &lt;td&gt;Critical&lt;br&gt;&lt;/td&gt; &lt;td&gt;stuff&lt;br&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;some item&lt;/td&gt; &lt;td&gt;&lt;a href="some website"&gt;some website&lt;/a&gt;&lt;br&gt;&lt;/td&gt; &lt;td&gt;Yes&lt;br&gt;&lt;/td&gt; &lt;td&gt;Important&lt;br&gt;&lt;/td&gt; &lt;td&gt;stuff&lt;br&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;b&gt;AGAIN&lt;/b&gt; &lt;b&gt;more&lt;/b&gt; &lt;b&gt;stuff&lt;/b&gt; &lt;b&gt;down here!&lt;/b&gt; &lt;/html&gt; """</pre><p> 我想获得类似的东西。</p><pre> top_html = """ &lt;html&gt; &lt;title&gt;&lt;b&gt;Main Title&lt;/b&gt;&lt;/Title&gt; &lt;b&gt;more&lt;/b&gt; &lt;b&gt;stuff&lt;/b&gt; &lt;b&gt;in here!&lt;/b&gt; &lt;/html&gt; """ bottom_html = """ &lt;html&gt; &lt;b&gt;AGAIN&lt;/b&gt; &lt;b&gt;more&lt;/b&gt; &lt;b&gt;stuff&lt;/b&gt; &lt;b&gt;down here!&lt;/b&gt; &lt;/html&gt; """</pre><p> 或者已经是文本格式,例如:</p><pre> top_html = 'Main Title more stuff down here!' bottom_html = 'AGAIN more stuff down here!'</pre><p> 所以我已经能够从整个 HTML 中提取&lt;table&gt;部分并进行处理(我将行&lt;tr&gt;和列&lt;td&gt;分开,以便我可以提取我需要的值),使用以下代码:</p><pre> soup = BeautifulSoup(input_html, "html.parser") table = soup.find('table')</pre></div>标签<table> </table> - Extracting HTML from outside the <table> tag JavaScript RegEx,用于从HTML标记中提取值 - JavaScript RegEx for extracting value from HTML tag 从python中的html标签中提取内容 - Extracting content from an html tag in python 从Objective-C中具有html标记的字符串中提取内容 - Extracting content from the string which has html tag in it in objective-c 在Python中从HTML提取标签值下的标签 - Extracting tag under tag values from HTML in python
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM