我正在尝试使用漂亮的汤从多个URL刮取图像,然后将URL和图像写入文件。文件格式如下:
URL_1的文字
img_1(已显示实际图像)
img_2(实际图像显示)
URL_2的文字
img_1(已显示实际图像)
我的输出文件的前几行现在看起来像:
Company : Firehydrant URL : https://www.firehydrant.io/âPNG
IHDRLf9ÃŒ∫ pHYsöúYiTXtXML:com.adobe.xmp<?xpacket begin="Ôªø" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c148 79.164036, 2019/08/13-01:06:57
...
如何查看实际显示的图像而不是二进制图像的文件?还是有其他方法可以做到这一点? 抱歉,这是一个非常愚蠢的问题!
这是我现在针对1个网站的代码:
with open(file_name, 'wb') as img_file:
option = webdriver.ChromeOptions()
option.add_argument(" — incognito")
browser = webdriver.Chrome(executable_path='./chromedriver', chrome_options=option)
url = 'https://www.firehydrant.io/'
browser.get(url)
timeout = 10
WebDriverWait(browser, timeout)
soup = BeautifulSoup(browser.page_source, 'html.parser')
images = soup.find_all("img")
found_first_image = False
for image in images:
src = image['src']
if(found_first_image == False): # ADD THE TEXT FOR THE COMPANY/URL
found_first_image = True
string = ("URL : " + url).encode('utf-8')
img_file.write(string)
# removing everything after the '?' if there is one in the src tag
src = urljoin(url, src)
if("?" in src):
pos = src.index("?")
src = src[:pos]
parsed = urlparse(src)
if(bool(parsed.netloc) and bool(parsed.scheme)): # download the image and write it to the file
response = requests.get(src)
URLFile.write(response.content)
将图像作为图像文件存储在外部,而不是将其作为文本放置在此处。编写图像时,只需保留图像的唯一ID,然后将该唯一ID放在文本文件中即可,而不是图像。为了保存图像,可以使用cv2.imread
并使用以下方式生成唯一编号:
import uuid
uuid.uuid1().hex