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 在代码中编辑)!
为什么 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 在代码中编辑)!