无法使用 Beautiful Soup 获取图像的 'src' 标签
Unable to grab the 'src' tag for an image with Beautiful Soup
我目前正在开发网络抓取工具,从我校报纸的网站上下载信息,然后重新上传到我们即将推出的新网站。现在我正在测试如何使用 bs4 从网页下载图像。但是,正如我在下面的代码中所解释的,我无法找到图像的 'src' 标签,也就是 url 以便下载图像。
import requests, bs4
url = 'https://www.behrendbeacon.com/parkingconcernsaddressed'
res = requests.get(url)
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text)
imgElems = soup.select('img')
print(imgElem[2])
# prints <img alt="18160.jpeg" data-type="image" id="comp-jpa6qz48imgimage"/>
所以进一步解释:
1.) 如果您转到 url 并使用开发人员工具检查网页,您将了解到 imgElem[2] 是我要抓取的新闻文章中的主要图像。下面是一张图片来说明我的意思:
Here's the web page screenshot
2.) 我打印 imgElem[2] 的原因是为了证明 Beautiful Soup 不会用其余数据 'src' 标签获取
简而言之,有人可以解释我错过了什么吗?无法获取 'src' 标签是否是因为该网站是 Wix 网站?感谢您提供的任何帮助
可能只是页面需要先呈现的情况,因为它是动态的。我相信包 requests-html
link here 可以做到这一点(尽管如果你试图将它与 Spyder 一起使用,它似乎有一个错误。所以我不太熟悉它。)在有些时候,我将不得不 learn/play 处理它。
与此同时,我使用 Selenium 处理动态页面。 Selenium 在这方面为我工作:
import bs4
from selenium import webdriver
url = 'https://www.behrendbeacon.com/parkingconcernsaddressed'
browser = webdriver.Chrome()
browser.get(url)
res = browser.page_source
soup = bs4.BeautifulSoup(res, 'html.parser')
imgElems = soup.find('img').get('src')
# print (imgElems)
# prints https://static.wixstatic.com/media/7384a7_7bb56fcbcb6c48c0875c93a2b6c9821c~mv2.jpg/v1/fill/
# w_820,h_151,al_c,q_80,usm_0.66_1.00_0.01/7384a7_7bb56fcbcb6c48c0875c93a2b6c9821c~mv2.webp
browser.close()
我目前正在开发网络抓取工具,从我校报纸的网站上下载信息,然后重新上传到我们即将推出的新网站。现在我正在测试如何使用 bs4 从网页下载图像。但是,正如我在下面的代码中所解释的,我无法找到图像的 'src' 标签,也就是 url 以便下载图像。
import requests, bs4
url = 'https://www.behrendbeacon.com/parkingconcernsaddressed'
res = requests.get(url)
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text)
imgElems = soup.select('img')
print(imgElem[2])
# prints <img alt="18160.jpeg" data-type="image" id="comp-jpa6qz48imgimage"/>
所以进一步解释:
1.) 如果您转到 url 并使用开发人员工具检查网页,您将了解到 imgElem[2] 是我要抓取的新闻文章中的主要图像。下面是一张图片来说明我的意思:
Here's the web page screenshot
2.) 我打印 imgElem[2] 的原因是为了证明 Beautiful Soup 不会用其余数据 'src' 标签获取
简而言之,有人可以解释我错过了什么吗?无法获取 'src' 标签是否是因为该网站是 Wix 网站?感谢您提供的任何帮助
可能只是页面需要先呈现的情况,因为它是动态的。我相信包 requests-html
link here 可以做到这一点(尽管如果你试图将它与 Spyder 一起使用,它似乎有一个错误。所以我不太熟悉它。)在有些时候,我将不得不 learn/play 处理它。
与此同时,我使用 Selenium 处理动态页面。 Selenium 在这方面为我工作:
import bs4
from selenium import webdriver
url = 'https://www.behrendbeacon.com/parkingconcernsaddressed'
browser = webdriver.Chrome()
browser.get(url)
res = browser.page_source
soup = bs4.BeautifulSoup(res, 'html.parser')
imgElems = soup.find('img').get('src')
# print (imgElems)
# prints https://static.wixstatic.com/media/7384a7_7bb56fcbcb6c48c0875c93a2b6c9821c~mv2.jpg/v1/fill/
# w_820,h_151,al_c,q_80,usm_0.66_1.00_0.01/7384a7_7bb56fcbcb6c48c0875c93a2b6c9821c~mv2.webp
browser.close()