【问题标题】:Using BeautifulSoup to search for element by src tag使用 BeautifulSoup 通过 src 标签搜索元素
【发布时间】:2019-09-18 11:09:24
【问题描述】:

假设我正在抓取网页,并且我想选择网页上的某个图像。正如您可以根据类名找到元素一样,我想通过其src 标记选择图像。如何选择我已经知道src 标签的图像?

即我想选择src标签为的图片:

https://assets.bandsintown.com/images/pin.svg

【问题讨论】:

    标签: python xpath web-scraping beautifulsoup css-selectors


    【解决方案1】:

    您可以按任意属性进行搜索;这应该工作:

    soup.findAll("img", {"src" : "https://assets.bandsintown.com/images/pin.svg"})
    

    【讨论】:

      【解决方案2】:

      虽然@Blorgbeard 的回答显示了Beautifulsoup 方法,但使用Selenium 您可以使用以下任一Locator Strategies 来实现相同的目的:

      • css_selector:

        my_elements = driver.find_elements_by_css_selector("[src=\"https://assets.bandsintown.com/images/pin.svg\"]")
        
      • xpath:

        my_elements = driver.find_elements_by_xpath("//*[@src=\"https://assets.bandsintown.com/images/pin.svg\"]")
        

      【讨论】:

        【解决方案3】:

        使用 Beautifulsoup,您可以通过多种方式做到这一点。您可以使用 css 选择器,也可以使用正则表达式。

        CSS 选择器

        for item in soup.select('img[src="https://assets.bandsintown.com/images/pin.svg"]'):
           print(item['src'])
        

        正则表达式与 find_all

        import re
        for item in soup.find_all('img',src=re.compile('https://assets.bandsintown.com/images/pin.svg')):
           print(item['src'])
        

        【讨论】:

        • 我不确定使用正则表达式进行精确字符串匹配有什么意义。那些. 应该是字面的,但正则表达式会将其解释为“任何字符”。
        • 这里正则表达式将搜索整个字符串。但是,如果任何其他未来的读者需要通过正则表达式搜索特定值,这是一个选项。
        • 是的,知道你可以这样使用正则表达式是很有用的(我自己实际上并不知道),但对于给定的例子来说它并没有真正的意义。像src=re.compile('https://.*\.bandsintown\.com/.*/pin\.svg') 这样的东西可能更能说明你可以用它做什么。
        【解决方案4】:

        您通过其src 值表示单个图像。使用select_one。工作量更少,您只需要一个属性选择器。

        soup.select_one('[src="https://assets.bandsintown.com/images/pin.svg"]')['src']
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-11-13
          • 2021-12-11
          • 1970-01-01
          • 1970-01-01
          • 2018-01-07
          • 1970-01-01
          • 2015-10-17
          相关资源
          最近更新 更多