如何从html抓取图像,该图像不在img标签中,但在div class ='blah blah'下

时间:2020-10-05 15:28:06

标签: python beautifulsoup python-requests lxml

我今天学习了如何在Python上使用BeautifulSoup.select('blahblah')从互联网上获取图像,以及如何在Mac上下载图像。

我能够下载带有img标签的照片,并按以下方式找到它们: src='http or // blah blah'

但是我在.jpg下找不到任何.png'div' class='something else'部分。

我要下载的图像不仅是图像,而且似乎还具有其他功能,例如显示登录弹出窗口,并带有一个按钮来放大图像。

import lxml
import bs4
import requests

rec = requests.get('https://www.pinterest.com/pin/701294973197421148/')
soup_rec = bs4.BeautifulSoup(rec.text, 'lxml')

soup_rec

soup_rec.select('div.zI7.iyn.Hsu') # I just type this way to try anything.

我尝试下载的图像是Pinterest页面中间的一位女演员照片。

1 个答案:

答案 0 :(得分:0)

为此,您将需要selenium,因为这是一个动态网站:

@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
private val _allJourneys = MutableLiveData<List<Journey>>()
val allJourneys: LiveData<List<Journey>> get() = _allJourneys

@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
private val _enrolledMap = MutableLiveData<Map<String, String>>()
val enrolledMap: LiveData<Map<String, String>> get() = _enrolledMap

fun getEnrolled() {
    viewModelScope.launch {
        progressRepository.getEnrolledJourneysMapOfUser().observeForever {
            Timber.d("Map values: $it")
            _enrolledMap.value = it
        }
    }

}

fun getJourneys() {
    viewModelScope.launch {
        journeysRepository.getAll().observeForever { it ->
            _allJourneys.value = it.filter {
               // enrolledMap.containsKey(it.id) ??? Nullpointer
            }
        }
    }
}

给我:

import bs4 as Bs
from selenium import webdriver

DRIVER_PATH = 'path/to/your/executable'
driver = webdriver.Chrome(executable_path=DRIVER_PATH)

driver.get('https://www.pinterest.com/pin/701294973197421148/')

page_src = Bs.BeautifulSoup(driver.page_source)

img = page_src.find("div",{"class":"zI7 iyn Hsu"}).find("img")

print(img.get_attribute_list("src")[0])

关于如何使用硒来抓取动态网站,您可以使用this guide