问题描述
晚上好
大家好,所以我想从这个网站上抓取图片
https://unsplash.com/t/wallpapers
是的,我知道他们确实有 API,但我想先使用我的编码技能,然后再使用 API。
from requests_html import HTMLSession
session = HTMLSession()
url ="https://unsplash.com/t/wallpapers"
r = session.get(url)
r.html.render(sleep=3)
images = r.html.find("._2UpQX")
imglinks =[]
for image in images:
imglinks.append(image.attrs["src"])
imglinks
print(imglinks)
我只能获得 6 个图像链接:(
这里是输出的图像以及所述网站的css
网站的 CSS:CSS of website
解决方法
我访问了 website 并注意到它只会呈现屏幕中存在的图像,即,当您滚动时,上面的图像将不再呈现,而是呈现新的图像。图片数量也会根据屏幕大小而变化。
我尝试搜索如何发送屏幕尺寸,以便我们可以发送更大的屏幕尺寸,但我找不到任何方法。
但我还有一个想法,我们可以在每次扫描图像的同时继续滚动。
它有效!我得到了 23 个运行以下脚本的图像(实际上每次运行都会有所不同,即使我不知道为什么)
from requests_html import HTMLSession
max_levels = 10
scroll_increment = 10
imglinks = set()
session = HTMLSession()
url = "https://unsplash.com/t/wallpapers"
scroll = 0
for level in range(max_levels):
print('level',level,'scroll',scroll)
r = session.get(url)
r.html.render(scrolldown=scroll)
scroll += scroll_increment
images = r.html.find("._2UpQX")
print('new images found',len(images))
for image in images:
imglinks.add(image.attrs["src"])
print('unique images found till now',len(imglinks))
session.close()
print(imglinks)
print(len(imglinks))
我会让你去探索卷轴的长度,不需要卷轴。
我没有尝试How to Crawl Infinite Scrolling Pages using Python,但它也可能对您有所帮助