Wix 不适用于 BeautifulSoup

Wix doesn't work with BeautifulSoup

为什么 BeautifulSoup 无法从 Wix 下载信息?我正在尝试使用 BeautifulSoup 从我的网站下载图片,而其他网站可以正常工作(实际工作的代码示例)wix 不工作... 我可以在我的网站设置中更改什么以使其正常工作吗?

编辑:代码

from bs4 import BeautifulSoup
import urllib2
import shutil
import requests
from urlparse import urljoin
import time


def make_soup(url):
    req = urllib2.Request(url, headers={'User-Agent': "Magic Browser"})
    html = urllib2.urlopen(req)
    return BeautifulSoup(html, 'html.parser')


def get_images(url):
    soup = make_soup(url)
    images = [img for img in soup.findAll('img')]
    print (str(len(images)) + " images found.")
    print 'Downloading images to current working directory.'
    image_links = [each.get('src') for each in images]
    for each in image_links:
        try:
            filename = each.strip().split('/')[-1].strip()
            src = urljoin(url, each)
            print 'Getting: ' + filename
            response = requests.get(src, stream=True)
            # delay to avoid corrupted previews
            time.sleep(1)
            with open(filename, 'wb') as out_file:
                shutil.copyfileobj(response.raw, out_file)
        except:
            print '  An error occurred. Continuing.'
    print 'Done.'


def main():
    url = HIDDEN ADDRESS
    get_images(url)

if __name__ == '__main__':
    main()

BeautifulSoup只能解析html。 Wix 站点由加载页面时运行的 javascript 生成。当您通过 urllib 请求页面的 html 时,您不会获得渲染的 html,您只会获得带有脚本的基础 html 来构建渲染的 html。为此,您需要像 selenium 或无头 chrome 浏览器这样的东西来通过 javascript 呈现网站,然后获取呈现的 html 并将其提供给 beautifulsoup.

这是一个 Wix 网站的正文示例,您可以看到除了通过 javascript.

填充的单个 div 之外没有其他内容
...
    <body>
        <div id="SITE_CONTAINER"></div>









    </body>
...

对于那些试图从 wix 网站下载图像的人,我想出了一个简单的主意。 在您的页面中打开一个 HTML 代码框架,并在您的代码中 link 打开您站点中图片的 img src。当您在 HTML 代码的 URL 上使用 BeautifulSoup 时,将下载所有图像(link 在代码中编辑)!