如何解析最初在Python中不返回结果的Web页面?

2024-05-15 19:13:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用Python加载this page中的图像列表。但是,当我在浏览器(Chrome或Safari)中打开页面并打开开发工具时,检查器返回的图像列表为<img class="grid-item--image">...。你知道吗

然而,当我尝试用Python解析它时,结果似乎不同。具体地说,我得到的图像列表是<img class="carousel--image"...>,而soup.findAll("img", "grid-item--image")确实返回了一个空列表。另外,我尝试用它的srcset标记保存那些图像,大多数保存的图像不是那些在web上列出的图像。你知道吗

我认为网页在渲染时使用了某种技术。如何成功解析网页?你知道吗

我在python3.5上使用了beautifulsoup4。我加载的页面如下:

import requests
from bs4 import BeautifulSoup
html = requests.get(url).text
soup = BeautifulSoup(html, "html.parser", from_encoding="utf-8")

return soup

Tags: from图像imageimport网页列表imghtml
1条回答
网友
1楼 · 发布于 2024-05-15 19:13:45

最好使用selenium这样的方法,如下所示:

from bs4 import BeautifulSoup
from selenium import webdriver

browser = webdriver.Firefox()
browser.get("http://www.vogue.com/fashion-shows/fall-2016-menswear/fendi#collection")
html_source = browser.page_source
soup = BeautifulSoup(html_source, "html.parser")

for item in soup.find_all("img", {"class":"grid-item image"}):
    print(item.get('srcset'))

这将显示以下类型的输出:

http://assets.vogue.com/photos/569d37e434324c316bd70f04/master/w_195/_FEN0016.jpg
http://assets.vogue.com/photos/569d37e5d928983d20a78e4f/master/w_195/_FEN0027.jpg
http://assets.vogue.com/photos/569d37e834324c316bd70f0a/master/w_195/_FEN0041.jpg
http://assets.vogue.com/photos/569d37e334324c316bd70efe/master/w_195/_FEN0049.jpg
http://assets.vogue.com/photos/569d37e702e08d8957a11e32/master/w_195/_FEN0059.jpg
...
...
...
http://assets.vogue.com/photos/569d3836486d6d3e20ae9625/master/w_195/_FEN0616.jpg
http://assets.vogue.com/photos/569d381834324c316bd70f3b/master/w_195/_FEN0634.jpg
http://assets.vogue.com/photos/569d3829fa6d6c9057f91d2a/master/w_195/_FEN0649.jpg
http://assets.vogue.com/photos/569d382234324c316bd70f41/master/w_195/_FEN0663.jpg
http://assets.vogue.com/photos/569d382b7dcd2a8a57748d05/master/w_195/_FEN0678.jpg
http://assets.vogue.com/photos/569d381334324c316bd70f2f/master/w_195/_FEN0690.jpg
http://assets.vogue.com/photos/569d382dd928983d20a78eb1/master/w_195/_FEN0846.jpg

这允许在浏览器中进行页面的完整呈现,然后可以获得结果HTML。你知道吗

相关问题 更多 >