繁体   English   中英

如何使用 Python 在标签内查找标签?

[英]How to find tags inside tags using Python?

我想知道如何在另一个标签中找到一个标签。

数据源是这样的:

<ul class="DB_su a1" style="display: none;">
  <li><a href="link">text</a></li>
  <li><a href="link2">text2</a></li>
  <li><a href="link3">text3</a></li>
  <li><a href="link4">text4</a></li>
  <li><a href="link5">text5</a></li>
  <li><a href="link6">text6</a></li>
</ul>
<ul class="DB_su a2" style="display: none;">
  <li><a href="link">text</a></li>
  <li><a href="link2">text2</a></li>
  <li><a href="link3">text3</a></li>
  <li><a href="link4">text4</a></li>
  <li><a href="link5">text5</a></li>
  <li><a href="link6">text6</a></li>
</ul>
<ul class="DB_su a3" style="display: none;">
  <li><a href="link">text</a></li>
  <li><a href="link2">text2</a></li>
  <li><a href="link3">text3</a></li>
  <li><a href="link4">text4</a></li>
  <li><a href="link5">text5</a></li>
  <li><a href="link6">text6</a></li>
</ul>
...

这是我参考HTML源代码制作的Python代码。

for flink in range(11):
   count = str(flink + 1)
   ss = soup.find('ul', class_='DB_su a' + count)
   dd = ss.findAllNext('a')
   print(dd)

这导致了比所需数据更多的结果。 不仅收集了标签内的数据,而且收集了所有接下来的标签。

我想得到这个href标签:

[link, link2, link3, link4, link5, link6]

在您的“for flink in range(11)”中,尝试添加如下内容:

from bs4 import BeautifulSoup
import re

html = """
<ul class="DB_su a1" style="display: none;">
  <li><a href="link">text</a></li>
  <li><a href="link2">text2</a></li>
  <li><a href="link3">text3</a></li>
  <li><a href="link4">text4</a></li>
  <li><a href="link5">text5</a></li>
  <li><a href="link6">text6</a></li>
</ul>
<ul class="DB_su a2" style="display: none;">
  <li><a href="link">text</a></li>
  <li><a href="link2">text2</a></li>
  <li><a href="link3">text3</a></li>
  <li><a href="link4">text4</a></li>
  <li><a href="link5">text5</a></li>
  <li><a href="link6">text6</a></li>
</ul>
<ul class="DB_su a3" style="display: none;">
  <li><a href="link">text</a></li>
  <li><a href="link2">text2</a></li>
  <li><a href="link3">text3</a></li>
  <li><a href="link4">text4</a></li>
  <li><a href="link5">text5</a></li>
  <li><a href="link6">text6</a></li>
</ul>
       """
soup = BeautifulSoup(html,'html.parser')
for n in soup.find_all('ul', attrs={'class': 'DB_su a3'}):    
   for x in n.find_all('a'): 
    print (x.get('href'))

结果:

link
link2
link3
link4
link5
link6

web怎么刮<p>里面的标签</p><div>具有来自 HTML 的类/ID 的标签,使用 Python</div><div id="text_translate"><p> 我想提取数据,例如</p><blockquote><p>发布日期:2016 年 6 月 16 日 漏洞标识符:APSB16-23 优先级:3 CVE 编号:CVE-2016-4126</p></blockquote><p> 来自<em><a href="https://helpx.adobe.com/security/products/air/apsb16-23.ug.html" rel="nofollow noreferrer">https://helpx.adobe.com/security/products/air/apsb16-23.ug.html</a></em></p><p> 编码:</p><pre> import requests from bs4 import BeautifulSoup as bs from pprint import pprint r = requests.get('https://helpx.adobe.com/cy_en/security/products/air/apsb16-31.html') soup = bs(r.content, 'html.parser') pprint([i.text for i in soup.select('div &gt;.text &gt; p', limit = 4 )] )</pre><p> output:</p><pre> ['Release date:\xa0September 13, 2016', 'Vulnerability identifier: APSB16-31', 'Priority: 3', 'CVE number:\xa0CVE-2016-6936']</pre><p> 问题是 /xa0。 我应该如何删除它? 如果还有其他有效的代码吗? 我也想把它转换成 CSV 文件。 谢谢你。</p></div>

[英]How to web scraping <p> tags inside <div> tags that has class/id from HTML using Python

暂无
暂无

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

相关问题 如何在Python中使用Beautifulsoup查找div中的所有锚标签 使用Python在XML内容内查找标签 使用beautifulsoup在标题标签内查找链接 如何在 Python 中使用 Selenium 访问 div 标签内的文本? 如何到达里面 <main> 使用selenium Python的标签? web怎么刮<p>里面的标签</p><div>具有来自 HTML 的类/ID 的标签,使用 Python</div><div id="text_translate"><p> 我想提取数据,例如</p><blockquote><p>发布日期:2016 年 6 月 16 日 漏洞标识符:APSB16-23 优先级:3 CVE 编号:CVE-2016-4126</p></blockquote><p> 来自<em><a href="https://helpx.adobe.com/security/products/air/apsb16-23.ug.html" rel="nofollow noreferrer">https://helpx.adobe.com/security/products/air/apsb16-23.ug.html</a></em></p><p> 编码:</p><pre> import requests from bs4 import BeautifulSoup as bs from pprint import pprint r = requests.get('https://helpx.adobe.com/cy_en/security/products/air/apsb16-31.html') soup = bs(r.content, 'html.parser') pprint([i.text for i in soup.select('div &gt;.text &gt; p', limit = 4 )] )</pre><p> output:</p><pre> ['Release date:\xa0September 13, 2016', 'Vulnerability identifier: APSB16-31', 'Priority: 3', 'CVE number:\xa0CVE-2016-6936']</pre><p> 问题是 /xa0。 我应该如何删除它? 如果还有其他有效的代码吗? 我也想把它转换成 CSV 文件。 谢谢你。</p></div> 使用 python BeautifulSoup,如何找到所有带有 NOT class 的“a”标签 如何使用 python 的 selectolax 解析器在 html 中查找视频标签 如何在Python中使用BeautifulSoup查找与两个值匹配的所有标签 如何在带有美丽汤的 class 中找到标签
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM