【问题标题】:Basic scraper that collects the description from gallery website从画廊网站收集描述的基本刮板
【发布时间】:2020-05-18 17:48:21
【问题描述】:

链接:https://vsco.co/chrysc/gallery

是否可以创建一个爬虫进入该链接并点击每张图片,将描述写入单个文本文件?

例如:

文本文件看起来像:

Circle Loop #vsco #kusama
#vsco #kusama ✨
#vsco White has eyes?
etc...

我在想“BeaustufilSoup4”或“Selenium”可以工作吗?这会是一个困难的脚本,我应该手动完成这个过程吗?

【问题讨论】:

    标签: web-scraping beautifulsoup


    【解决方案1】:

    此脚本会将所有描述打印到屏幕和文件中:

    import re
    import json
    import requests
    
    url = 'https://vsco.co/chrysc/gallery'
    
    html_data = requests.get(url).text
    
    data = json.loads(re.search(r'window\.__PRELOADED_STATE__ = (\{.*\})', html_data).group(1))
    
    # uncomment this to see all data:
    # print(json.dumps(data, indent=4))
    
    # print description to the screen:
    for img in data['entities']['images'].values():
        print(img['description'])
    
    # print description to the file:
    with open('output.txt', 'w') as f_out:
        for img in data['entities']['images'].values():
            print(img['description'], file=f_out)
    

    打印:

    Circle Loop #vsco #kusama
    #vsco #kusama ✨
    #vsco White has eyes?
    missing nights like these #vsco
    #vsco :)
    #vsco
    #vsco Water//Alberta
    who she is, is a result of who she was 
    #vsco #chrystene peace out
    #vsco #chrystene DO NOT DISTURB
    #vsco #chrystene Beautiful Morning
    #vsco #chrystene Paradise
    #vsco Wandering Fairy Cat ✨?
    #vsco close your eyes so you’re less embarrassed ??? 
    

    并将相同的内容写入名为output.txt的文件中。

    【讨论】:

    • 该死!!你为我节省了很多时间!是否可以考虑多个页面?画廊是一种“无限滚动”的网站
    • @Aedam 好吧,画廊是通过 JavaScript 加载的,也许在这里使用 selenium 会很有用。您可以在 SO 上找到示例。
    • @Aedam 如果您可以使用requests 模块模拟Ajax 请求,那么这是更好的方法——seleniumrequests 更重量级。
    • 例如,我会向第一个链接发出请求,使用您的代码对其进行处理等,然后获取 next_cursor 并将其添加到链接的末尾并以某种方式使其成为循环?直到没有更多的 next_cursors/errors 出来?对吗?
    • @Aedam 是的,像这样。但是每个页面都是不同的(使用各种 cookie、标题...)您可以使用 Firefox 开发人员工具(Chrome 也有类似的东西)来调试请求/标题...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多