BeautifulSoup HTML获得src链接

时间:2015-12-19 03:39:26

标签: python html python-3.x beautifulsoup html-parsing

我正在使用python 3.5.1和请求模块制作一个小型网页抓取工具,该模块会从特定网站下载所有漫画。我正在尝试一个页面。我使用BeautifulSoup4解析页面,如下所示:

import webbrowser
import sys
import requests
import re
import bs4

res = requests.get('http://mangapark.me/manga/berserk/s5/c342')
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, 'html.parser')

for link in soup.find_all("a", class_ = "img-link"):
    if(link):
        print(link)
    else:
        print('ERROR')

当我print(link)时,我感兴趣的是正确的HTML部分,但当我尝试仅使用link.get('src')获取 src 中的链接时仅打印None

我尝试使用以下方式获取链接:

img = soup.find("img")["src"]

并且没关系,但我希望拥有所有src链接,而不是第一个链接。 我对beautifulSoup的经验不多。请指出发生了什么。谢谢。

我感兴趣的网站上的示例HTML部分是:

<a class="img-link" href="#img2">
    <img id="img-1" class="img"
          rel="1" i="1" e="0" z="1" 
          title="Berserk ch.342 page 1" src="http://2.p.mpcdn.net/352582/687224/1.jpg"
          width="960" _width="818" _heighth="1189"/>        
</a>

1 个答案:

答案 0 :(得分:2)

我会使用CSS selector一次性完成:

for img in soup.select("a.img-link img[src]"):
    print(img["src"])

在这里,我们将所有img元素的src属性放在a元素下,img-link类。它打印:

http://2.p.mpcdn.net/352582/687224/1.jpg
http://2.p.mpcdn.net/352582/687224/2.jpg
http://2.p.mpcdn.net/352582/687224/3.jpg
http://2.p.mpcdn.net/352582/687224/4.jpg
...
http://2.p.mpcdn.net/352582/687224/20.jpg

如果您仍想使用find_all(),则必须将其嵌套:

for link in soup.find_all("a", class_ = "img-link"):
    for img in link.find_all("a", src=True):  # searching for img with src attribute
        print(img["src"])