python - 我正在尝试使用 python 的请求模块从网络下载并保存图像
问题描述
我正在尝试通过此 url 的请求下载此图像,但 idk 在第 17 行发生了某些错误,该错误未定义问题所在。
我尝试在 URL 中添加 http:// 以使其成为清晰的 URL。
这是我写的代码。
from selenium import webdriver
from bs4 import BeautifulSoup
import requests
import os
driver = webdriver.Chrome(executable_path= r'E:/Summer/FirstThings/Web scraping (bucky + pdf)/webscraping/tutorials-master/chromedriver.exe')
url = 'https://www.nba.com/players/jaylen/adams/1629121'
driver.get(url)
#print(driver.page_source)
soup = BeautifulSoup(driver.page_source , 'lxml')
div = soup.find('section' , class_='nba-player-header__item nba-player-header__headshot')
img = div.find('img')
print("")
m=('http://'+ img['src'])
f = open('jaylen_adams.jpg','w')
f.write(requests.get(m).content)
f.close()
driver.__exit__()
解决方案
我发现了几个错误:
首先,您需要修复 url,因为它试图访问http:////ak-static.cms.nba.com/wp-content/uploads/headshots/nba/latest/260x190/1629121.png
无效。因此,将行更改为:
m=('http:'+ img['src'])
其次,您需要写入字节。所以改为:
f = open('C:/jaylen_adams.jpg','wb')
代码:
from selenium import webdriver
from bs4 import BeautifulSoup
import requests
import os
driver = webdriver.Chrome('C:/chromedriver_win32/chromedriver.exe')
url = 'https://www.nba.com/players/jaylen/adams/1629121'
driver.get(url)
#print(driver.page_source)
soup = BeautifulSoup(driver.page_source , 'lxml')
div = soup.find('section' , class_='nba-player-header__item nba-player-header__headshot')
img = div.find('img')
print("")
m=('http:'+ img['src']) # <----- edit made here
f = open('C:/jaylen_adams.jpg','wb') # <---- edit made here
f.write(requests.get(m).content)
f.close()
driver.__exit__()
另外:没有必要使用 selenium,因为如果你在做多个页面,这可能会减慢进程。.close()
您可以通过仅使用请求来简化它,并且如果您将它放在语句中,也可以消除使用文件的需要with
,因为它会在完成后自动关闭:
更短的代码:
from bs4 import BeautifulSoup
import requests
url = 'https://www.nba.com/players/jaylen/adams/1629121'
response = requests.get(url)
soup = BeautifulSoup(response.text , 'lxml')
div = soup.find('section' , class_='nba-player-header__item nba-player-header__headshot')
img = div.find('img')
print("")
m=('http:'+ img['src'])
with open('C:/jaylen_adams.jpg','wb') as f:
f.write(requests.get(m).content)
推荐阅读
- python - AttributeError:“_io.TextIOWrapper”对象没有属性“编码”
- python - pysftp 连接更改目录不起作用
- json - 如何从 postgres JSONB 列中获取值?
- r - 返回向量中的所有对象
- tensorflow - TensorFlow ImageDataGenerator 输出数量
- database - Informix - 创建表时的默认权限
- dart - 错误未定义类 TimeOfDay。尝试使用颤振时间时
- javascript - 反应路由器嵌套路由 - 当没有路由匹配时如何重定向
- python - Linux shell中的python导出环境变量
- python - 为什么 Python 在每次循环时都不执行一个函数?