如何解决为什么 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
网站的 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 举报,一经查实,本站将立刻删除。