如何使用 Python 从 DIV 内的 <a> 标签中提取标题?
How to Extract title from <a> tag within DIV using Python?
我是 Python 的新手,
我想提取放置在 Divs 中的 标签内的所有 title/s。
它可以有 0 个标题或多达 100 个。
是childDIV<div class="Shl zI7 iyn Hsu">
里面有标签和title
这是包含所有 child DIV 的第一个 Main DIV 代码:
<div class="Eqh F6l Jea k1A zI7 iyn Hsu"><div class="Shl zI7 iyn Hsu"><a data-test-id="search-guide"
href="" title="Search for "living room colors""><div class="Jea Lfz XiG fZz gjz qDf zI7 iyn
Hsu" style="white-space: nowrap; background-color: rgb(162, 152, 139);"><div class="tBJ dyH iFc MF7
erh tg7 IZT mWe">Living</div></div></a>
在上面的例子中,我想获取“客厅颜色”而不是title前面的所有内容=,
我想我以后可能会有一些正则表达式,但我有从 HTML 解析中获取标题的问题。
我试过以下Python:
import requests
from bs4 import BeautifulSoup
url = "https://www.pinterest.com/search/pins/?q=room%20color"
get_url = requests.get(url)
get_text = get_url.text
soup = BeautifulSoup(get_text, "html.parser")
DivTitle = soup.select('a.Shl.zI7.iyn.Hsu')[0].text.strip()
print(DivTitle)
我得到:IndexError:列表索引超出范围
当我搜索上面的关键字时,搜索结果中出现了不止一个标题(建议关键字)。
感谢您的帮助。
已编辑:
好的,我成功了,但我试图让它从 URL 解析而不是粘贴我的代码:
这是我使用的部分:
import requests
vgm_url = 'https://www.pinterest.com/search/pins/?q=skin%20care'
html_text = requests.get(vgm_url).text
soup = BeautifulSoup(html_text, 'html.parser')
但我什么也没得到,也没有错误。
您的选择器是错误的,因为 DIV 具有您想要的 类,而 A 是 DIV 的子项。 title
是 A 元素的属性。
from bs4 import BeautifulSoup
data = '''\
<html>
<head>
<meta name="generator"
content="HTML Tidy for HTML5 (experimental) for Windows https://github.com/w3c/tidy-html5/tree/c63cc39" />
<title></title>
</head>
<body>
<div class="Eqh F6l Jea k1A zI7 iyn Hsu">
<div class="Shl zI7 iyn Hsu">
<a data-test-id="search-guide" href="" title="Search for "living room colors"">
<div class="Jea Lfz XiG fZz gjz qDf zI7 iyn Hsu" style="white-space: nowrap; background-color: rgb(162, 152, 139);">
<div class="tBJ dyH iFc MF7 erh tg7 IZT mWe">Living</div>
</div>
</a>
</div>
</div>
</body>
</html>
'''
soup = BeautifulSoup(data, 'html.parser')
a = soup.select('div.Shl.zI7.iyn.Hsu a')[0]
print(a['title'])
我是 Python 的新手, 我想提取放置在 Divs 中的 标签内的所有 title/s。 它可以有 0 个标题或多达 100 个。
是childDIV<div class="Shl zI7 iyn Hsu">
里面有标签和title
这是包含所有 child DIV 的第一个 Main DIV 代码:
<div class="Eqh F6l Jea k1A zI7 iyn Hsu"><div class="Shl zI7 iyn Hsu"><a data-test-id="search-guide"
href="" title="Search for "living room colors""><div class="Jea Lfz XiG fZz gjz qDf zI7 iyn
Hsu" style="white-space: nowrap; background-color: rgb(162, 152, 139);"><div class="tBJ dyH iFc MF7
erh tg7 IZT mWe">Living</div></div></a>
在上面的例子中,我想获取“客厅颜色”而不是title前面的所有内容=, 我想我以后可能会有一些正则表达式,但我有从 HTML 解析中获取标题的问题。
我试过以下Python:
import requests
from bs4 import BeautifulSoup
url = "https://www.pinterest.com/search/pins/?q=room%20color"
get_url = requests.get(url)
get_text = get_url.text
soup = BeautifulSoup(get_text, "html.parser")
DivTitle = soup.select('a.Shl.zI7.iyn.Hsu')[0].text.strip()
print(DivTitle)
我得到:IndexError:列表索引超出范围
当我搜索上面的关键字时,搜索结果中出现了不止一个标题(建议关键字)。
感谢您的帮助。
已编辑: 好的,我成功了,但我试图让它从 URL 解析而不是粘贴我的代码:
这是我使用的部分:
import requests
vgm_url = 'https://www.pinterest.com/search/pins/?q=skin%20care'
html_text = requests.get(vgm_url).text
soup = BeautifulSoup(html_text, 'html.parser')
但我什么也没得到,也没有错误。
您的选择器是错误的,因为 DIV 具有您想要的 类,而 A 是 DIV 的子项。 title
是 A 元素的属性。
from bs4 import BeautifulSoup
data = '''\
<html>
<head>
<meta name="generator"
content="HTML Tidy for HTML5 (experimental) for Windows https://github.com/w3c/tidy-html5/tree/c63cc39" />
<title></title>
</head>
<body>
<div class="Eqh F6l Jea k1A zI7 iyn Hsu">
<div class="Shl zI7 iyn Hsu">
<a data-test-id="search-guide" href="" title="Search for "living room colors"">
<div class="Jea Lfz XiG fZz gjz qDf zI7 iyn Hsu" style="white-space: nowrap; background-color: rgb(162, 152, 139);">
<div class="tBJ dyH iFc MF7 erh tg7 IZT mWe">Living</div>
</div>
</a>
</div>
</div>
</body>
</html>
'''
soup = BeautifulSoup(data, 'html.parser')
a = soup.select('div.Shl.zI7.iyn.Hsu a')[0]
print(a['title'])