使用bs4和请求仅获取原始链接

时间:2018-07-11 02:36:07

标签: python string web-scraping beautifulsoup python-requests

我的目标只是获得原始链接,然后我便可以使用该链接下载图像。但随着链接的加入,我会得到一些额外的字符。 从bs4导入BeautifulSoup 导入请求

[<img src="https://2.bp.blogspot.com/-p72DilhF-_s/WRSF41vu50I/AAAAAAAAlsk/6BTxzQAzPkwteMgEHch2JFH0JKKpbKrZACHM/s16000/0137-001.png"/>]

我最终得到的是这样的:

https://2.bp.blogspot.com/-p72DilhF-_s/WRSF41vu50I/AAAAAAAAlsk/6BTxzQAzPkwteMgEHch2JFH0JKKpbKrZACHM/s16000/0137-001.png

我希望我能得到这样的东西:

flake8

3 个答案:

答案 0 :(得分:1)

如果只想获取src,则可以执行以下操作:

for p in pages:
    y = [tag["src"] for tag in p.findAll("img")]
    print(y)

它从每个img标签中获取URL,而不是获取整个标签。

此外,如果您使用的是bs4BeautifulSoup4,请使用find_all而不是findAllfindAll是旧版本bs3

答案 1 :(得分:1)

我认为它将起作用:

>>> from bs4 import BeautifulSoup
>>> data = """<img src="https://2.bp.blogspot.com/-p72DilhF-_s/WRSF41vu50I/AAAAAAAAlsk/6BTxzQAzPkwteMgEHch2JFH0JKKpbKrZACHM/s16000/0137-001.png"/>"""
>>> soap = BeautifulSoup(data,"lxml")
>>> for i in soap.find_all("img"):
        link = i.get("src")
        print(link)

答案 2 :(得分:0)

另一种方法是使用XPath。我建议在这里使用lxml,因为Beautiful内没有XPath支持。这实际上是一个非常简单的解决方案:

from lxml import html
import requests

page = requests.get('https://readheroacademia.net/manga/boku-no-hero-academia-chapter-137/')
tree = html.fromstring(page.content)
#This will create a list of img src attributes beneth the `<div id="acp_content" class="acp_content">` tag:
srcs = tree.xpath('//div[@id="acp_content"]//img/@src')