当前位置: 首页 > 知识库问答 >
问题:

BeautifulSoup:从定位标记中提取文本

慕乐池
2023-03-14

我想摘录:

  • 图像标记和
  • 数据内的锚标记文本

我成功地提取了img src,但从锚标记中提取文本时遇到了问题。

<a class="title" href="http://www.amazon.com/Nikon-COOLPIX-Digital-Camera-NIKKOR/dp/B0073HSK0K/ref=sr_1_1?s=electronics&amp;ie=UTF8&amp;qid=1343628292&amp;sr=1-1&amp;keywords=digital+camera">Nikon COOLPIX L26 16.1 MP Digital Camera with 5x Zoom NIKKOR Glass Lens and 3-inch LCD (Red)</a> 

这是整个HTML页面的链接。

这是我的代码:

for div in soup.findAll('div', attrs={'class':'image'}):
    print "\n"
    for data in div.findNextSibling('div', attrs={'class':'data'}):
        for a in data.findAll('a', attrs={'class':'title'}):
            print a.text
    for img in div.findAll('img'):
        print img['src']

我试图做的是提取图像src(link)和div class=data中的标题,例如:

 <a class="title" href="http://www.amazon.com/Nikon-COOLPIX-Digital-Camera-NIKKOR/dp/B0073HSK0K/ref=sr_1_1?s=electronics&amp;ie=UTF8&amp;qid=1343628292&amp;sr=1-1&amp;keywords=digital+camera">Nikon COOLPIX L26 16.1 MP Digital Camera with 5x Zoom NIKKOR Glass Lens and 3-inch LCD (Red)</a> 

应提取:

尼康COOLPIX L26 16.1 MP数码相机,配备5倍变焦NIKKOR玻璃镜头和3英寸LCD(红色)

共有3个答案

司寇凯
2023-03-14

我建议走lxml路线并使用xpath。

from lxml import etree
# data is the variable containing the html
data = etree.HTML(data)
anchor = data.xpath('//a[@class="title"]/text()')
贝钧
2023-03-14

就我而言,它是这样工作的:

from BeautifulSoup import BeautifulSoup as bs

url="http://blabla.com"

soup = bs(urllib.urlopen(url))
for link in soup.findAll('a'):
        print link.string

希望有帮助!

许彦
2023-03-14

这将有助于:

from bs4 import BeautifulSoup

data = '''<div class="image">
        <a href="http://www.example.com/eg1">Content1<img  
        src="http://image.example.com/img1.jpg" /></a>
        </div>
        <div class="image">
        <a href="http://www.example.com/eg2">Content2<img  
        src="http://image.example.com/img2.jpg" /> </a>
        </div>'''

soup = BeautifulSoup(data)

for div in soup.findAll('div', attrs={'class':'image'}):
    print(div.find('a')['href'])
    print(div.find('a').contents[0])
    print(div.find('img')['src'])

如果你正在研究亚马逊产品,那么你应该使用官方API。至少有一个Python包可以缓解您的抓取问题,并将您的活动保持在使用范围内。

 类似资料:
  • 问题内容: 我要提取: 来自标签的src的文本和 类数据内的定位标记的文本 我成功地提取了img src,但是从锚标记中提取文本时遇到了麻烦。 这是整个HTML页面的链接。 这是我的代码: 我想做的是 提取图像src(链接)和中的标题,因此例如: 应该提取: 问题答案: 以上所有答案确实可以帮助我构建答案,因此,我对其他用户提出的所有答案投了赞成票:但是我最终对自己正在处理的确切问题汇总了自己的答

  • 我正在尝试使用Python中的BeautifulSoup包提取存在于div标记中的文本。 示例我想提取标记 内部的文本 以及 中的文本 当我运行代码时,系统崩溃并显示以下错误: ----------------------------------------------------------------------------------------------------在60###artic

  • 我是网页刮刮的新手。我正在使用美丽的汤提取谷歌播放商店。但是,我坚持从div标记中检索文本。Div标记如下所示: 我想检索从“谢谢你的反馈”开始的文本。我使用以下代码检索文本: 但是,上面的命令也返回不需要的文本,即'education.com'和日期。我不确定如何从没有类名的div标记中检索文本,如上面的示例所示。等待你的指引。

  • 我正在尝试刮网页,在那里我需要解码整个表到一个数据帧。我正为此使用漂亮的汤。在某些标记中,有一些标记没有任何文本。但这些值会显示在网页上的特定span标记中。 下面的代码对应于该网页, 但是,这个标记中显示的值是。我试着删掉它,但我收到的是空短信。 如何刮这个价值使用美丽的汤。 URL:https://en.tutiempo.net/climate/ws-432950.html 下面给出了我的用于

  • 问题内容: 这是我的问题。我有一个html内容:innerText我需要提取“ innerText”。在Jsoup中尝试此操作时,我发现当由Jsoup解析时,内部文本超出了定位标记。 这是我的代码 输出: 为什么“ innerText”移到了定位标记之外? 问题答案: 您可以通过调用元素上的方法来访问文本。 顺便说一句 使用您发布的代码(和JSoup 1.8.1)产生以下输出

  • 我从http请求中得到了这个QString,我需要做的是只提取字符串“一致“在标签内 怎么做?