我今天学习了如何在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页面中间的一位女演员照片。
答案 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。