微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 requests_HTML 只能获取 6 个图片链接?

如何解决为什么 requests_HTML 只能获取 6 个图片链接?

晚上好

大家好,所以我想从这个网站上抓取图片

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

输出Output

网站的 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,但它也可能对您有所帮助

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。