我正在尝试从任何网站抓取所有图像 URL。
from bs4 import BeautifulSoup
import urllib.request as urllib2
import re
html_page = urllib2.urlopen("http://imgur.com")
soup = BeautifulSoup(html_page, features="html5lib")
images = []
for img in soup.findAll('img', limit=None, recursive=True):
images.append(img.get('src'))
print(images)
这是教程代码,尽管它似乎不起作用。我尝试更改解析器,将限制设置为 None,但它总是只返回两个结果,而此网站上有大量 img 元素
['https://www.facebook.com/tr?id=742377892535530&ev=PageView&noscript=1', 'https://sb.scorecardresearch.com/p?c1=2&c2=22489583&cv=3.6.0&cj=1']
您能告诉我如何获得所有这些吗?
最佳答案
这是因为这个网站需要 javascript 来呈现所有内容。
如果禁用 JavaScript,您将看不到任何内容。
您需要使用一些使用 javascript 的浏览器,例如您可以使用 playwright .
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.webkit.launch(headless=True)
baseurl = "http://imgur.com"
page = browser.new_page()
page.goto(baseurl)
allImages = page.query_selector_all("//img")
print("Total images: " + str(len(allImages)))
for img in allImages:
print(img.get_attribute("src"))
browser.close()
输出:
Total images: 43
https://s.imgur.com/desktop-assets/desktop-assets/icon-new-post.13ab64f9f36ad8f25ae3544b350e2ae1.svg
//s.imgur.com/images/favicon-32x32.png
https://s.imgur.com/desktop-assets/desktop-assets/icon-search.8d0f9b564a4659d48d8eca38b968a7f2.svg
https://s.imgur.com/desktop-assets/desktop-assets/icon-filter.551faed00bcf04e07c9e01a6874bd652.svg
关于python - 使用 BeautifulSoup 从网站获取图像 src,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72774991/