ขูดและดาวน์โหลด Google รูปภาพด้วย Python

เผยแพร่แล้ว: 2023-01-02

ความแพร่หลายที่เพิ่มขึ้นของการขูดเว็บได้เพิ่มพื้นที่การใช้งานอย่างมาก ปัจจุบันแอปพลิเคชัน AI จำนวนมากป้อนชุดข้อมูลการขูดเว็บด้วยข้อมูลล่าสุดเป็นประจำ มีการไหลเวียนของข้อมูลจากเว็บไซต์เป้าหมายไปยังชุดข้อมูลของแอปพลิเคชันปัญญาประดิษฐ์อย่างสม่ำเสมอและต่อเนื่อง

โพสต์ที่เกี่ยวข้อง: ผลกระทบของปัญญาประดิษฐ์ต่ออนาคตของความสำเร็จของลูกค้า

การประมวลผลภาพเป็นหนึ่งในส่วนที่ได้รับความนิยมมากที่สุดในแอปพลิเคชันปัญญาประดิษฐ์ การประมวลผลภาพเป็นสาขาวิชาวิทยาการคอมพิวเตอร์ที่มุ่งเน้นให้คอมพิวเตอร์สามารถระบุและเข้าใจวัตถุและบุคคลในภาพและวิดีโอได้ เช่นเดียวกับปัญญาประดิษฐ์ประเภทอื่นๆ การประมวลผลภาพมีจุดประสงค์เพื่อดำเนินการและทำงานอัตโนมัติที่จำลองความสามารถของมนุษย์ ในกรณีนี้ การประมวลผลภาพจะพยายามคัดลอกทั้งวิธีที่ผู้คนมองเห็นและวิธีที่พวกเขาเข้าใจสิ่งที่พวกเขาเห็น

ข้อมูลที่จำเป็นสำหรับการพัฒนาอัลกอริทึมและการลดระยะขอบของข้อผิดพลาดในหลายๆ ฟิลด์ โดยเฉพาะอย่างยิ่งในโครงการประมวลผลภาพ ได้มาจากเว็บสแครป ในบทความนี้ เราจะพัฒนาแอปพลิเคชันที่ใช้บ่อยในโครงการประมวลผลภาพ เราจะขูดและดาวน์โหลด Google รูปภาพด้วยภาษาโปรแกรม Python มาเริ่มกันเลย

การตั้งค่าโครงการ

ก่อนอื่นมาเปิดโฟลเดอร์บนเดสก์ท็อป มาเปิดเทอร์มินัลในพาธไฟล์นี้และติดตั้งไลบรารี่ที่จำเป็นโดยรันคำสั่งด้านล่าง

คำขอติดตั้ง pip bs4

หลังจากติดตั้งไลบรารีที่จำเป็นแล้ว ให้สร้างไฟล์ชื่อ 'index.py' ในโฟลเดอร์

รหัส

มาวางโค้ดต่อไปนี้ลงในไฟล์ 'index.py' ที่เราสร้างขึ้น

คำขอนำเข้า, re, json, urllib.request
จาก bs4 นำเข้า BeautifulSoupheaders = {
“User-Agent”: “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML เช่น Gecko) Chrome/103.0.5060.114 Safari/537.36”
}queryParameters = {“q”: “marvel”, “tbm”: “isch”, “hl”: “en”, “gl”: “us”, “ijn”: “0” }

target_image_path = “.isv-r.PNCib.MSM1fd.BUooTd”
targetted_image_base_html_path = “.VFACy.kGQAp.sMi44c.lNHeqe.WGvvNb”

html = request.get(“https://www.google.com/search”, params=queryParameters, headers=headers, timeout=30)
ซุป = BeautifulSoup(html.text, “lxml”)

google_images = []

def scrape_and_download_google_images():

images_data_in_json = converter_image_to_json()

matched_image_data = re.findall(r'\”b-GRID_STATE0\”(.*)sideChannel:\s?{}}', images_data_in_json)

Remove_matched_thumbnails = remove_matched_get_thumbnails(matched_google_image_data=matched_image_data)

matched_ resolution_images = re.findall(r”(?:'|,),\[\”(https:|http.*?)\”,\d+,\d+\]”, Remove_matched_thumbnails)

full_ resolution_images = get_ressolution_image (matched_ resolution_images = matched_ resolution_images)

สำหรับดัชนี (image_data, image_link) ในการแจกแจง (zip (soup.select (target_image_path), full_ resolution_images), start=1):

append_image_to_list(image_data=image_data, image_link=image_link)

พิมพ์(f'{index} เริ่มดาวน์โหลดรูปภาพ')

download_image(image_link=image_link, ดัชนี=ดัชนี)

พิมพ์(f'{index} ดาวน์โหลดรูปภาพสำเร็จ')

พิมพ์(f'scraped and download images: {google_images}')

def remove_matched_get_thumbnails (จับคู่_google_image_data):
ส่งคืน re.sub(
r'\[\”(https\:\/\/encrypted-tbn0\.gstatic\.com\/images\?.*?)\”,\d+,\d+\]', “”, str(matched_google_image_data ))

def get_ resolution_image (จับคู่ความละเอียดของภาพ):
กลับ [
bytes(bytes(img, “ascii”).decode(“unicode-escape”), “ascii”).decode(“unicode-escape”) สำหรับ img ใน Matched_Resolution_images
]

def converter_image_to_json():
all_script_tags = soup.select (“สคริปต์”)
images_data = “”.join(re.findall(r”AF_initDataCallback\(([^<]+)\);”, str(all_script_tags)))
fixed_images_data = json.dumps (ภาพ_ข้อมูล)
ส่งคืน json.loads (fixed_images_data)

def append_image_to_list (image_data, image_link):
google_images.append({
“image_title”: image_data.select_one(targetted_image_base_html_path)[“title”],
“image_source_link”: image_data.select_one(targetted_image_base_html_path)[“href”],
“image_link”: อิมเมจ_ลิงค์
})

def download_image (ลิงค์รูปภาพ, ดัชนี):
opener=urllib.request.build_opener()
opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML เช่น Gecko) Chrome/101.0.4951.54 Safari/537.36′)]
urllib.request.install_opener (ตัวเปิด)
urllib.request.urlretrieve(ลิงค์รูปภาพ, f'Scraped_Images/Image_{index}.jpg')

ขูด_และ_ดาวน์โหลด_google_images()

หากเราตรวจสอบโค้ด ขั้นแรกให้ดูที่ฟิลด์ที่มีค่าคงที่ ฟิลด์ต่อไปนี้ถูกกำหนดเป็นค่าคงที่ เราระบุชื่อและคุณสมบัติของรูปภาพที่เราต้องการขูดและดาวน์โหลดด้วยตัวแปร queryParams

อ่านเพิ่มเติม: ChatGPT – ความหมายสำหรับธุรกิจ

ส่วนหัว = {
“User-Agent”: “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML เช่น Gecko) Chrome/103.0.5060.114 Safari/537.36”
}queryParameters = {“q”: “marvel”, “tbm”: “isch”, “hl”: “en”, “gl”: “us”, “ijn”: “0” }target_image_path = “.isv- r.PNCIb.MSM1fd.BUooTd”
targeted_image_base_html_path = “.VFACy.kGQAp.sMi44c.lNHeqe.WGvvNb”

html = request.get(“https://www.google.com/search”, params=queryParameters, headers=headers, timeout=30)
ซุป = BeautifulSoup(html.text, “lxml”)

google_images = []

วิธีการ scratch_and_download_google_images() คือจุดเริ่มต้นของสตรีม รูปภาพเป้าหมายจะถูกคัดลอกแล้วดาวน์โหลดไปยังโฟลเดอร์ที่เราระบุ

def scrape_and_download_google_images():

images_data_in_json = converter_image_to_json()

matched_image_data = re.findall(r'\”b-GRID_STATE0\”(.*)sideChannel:\s?{}}', images_data_in_json)

Remove_matched_thumbnails = remove_matched_get_thumbnails(matched_google_image_data=matched_image_data)

matched_ resolution_images = re.findall(r”(?:'|,),\[\”(https:|http.*?)\”,\d+,\d+\]”, Remove_matched_thumbnails)

full_ resolution_images = get_ressolution_image (matched_ resolution_images = matched_ resolution_images)

สำหรับดัชนี (image_data, image_link) ในการแจกแจง (zip (soup.select (target_image_path), full_ resolution_images), start=1):

append_image_to_list(image_data=image_data, image_link=image_link)

พิมพ์(f'{index} เริ่มดาวน์โหลดรูปภาพ')

download_image(image_link=image_link, ดัชนี=ดัชนี)

พิมพ์(f'{index} ดาวน์โหลดรูปภาพสำเร็จ')

พิมพ์(f'scraped and download images: {google_images}')

การดาวน์โหลดรูปภาพที่คัดลอกไปยังโฟลเดอร์เสร็จสิ้นในเมธอด download_image(image_link=image_link, index=index) รูปภาพที่คัดลอกด้วยวิธีนี้จะถูกบันทึกไว้ใน “Scraped_Images” ที่เราเพิ่มไว้ก่อนหน้านี้ในตำแหน่งไฟล์ของโปรเจ็กต์

หมายเหตุ: สร้างโฟลเดอร์ “Scraped_Images” ในโครงสร้างโครงการก่อนเรียกใช้แอปพลิเคชัน

def download_image (ลิงค์รูปภาพ, ดัชนี):
opener=urllib.request.build_opener()
opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML เช่น Gecko) Chrome/101.0.4951.54 Safari/537.36′)]
urllib.request.install_opener (ตัวเปิด)
urllib.request.urlretrieve(ลิงค์รูปภาพ, f'Scraped_Images/Image_{index}.jpg')

อ่านเพิ่มเติม: แอปพลิเคชั่นและประโยชน์ของ Blockchain-as-a-service สำหรับธุรกิจคืออะไร?

วิ่ง

ในการเรียกใช้แอปพลิเคชัน ให้เปิดเทอร์มินัลในตำแหน่งไฟล์และเรียกใช้คำสั่งต่อไปนี้

หลาม index.py

หลังจากที่แอปพลิเคชันทำงาน ข้อมูลต่อไปนี้จะถูกพิมพ์บนคอนโซลของแอปพลิเคชัน

1. ภาพเริ่มดาวน์โหลด
1. ดาวน์โหลดรูปภาพสำเร็จแล้ว
2. ภาพเริ่มดาวน์โหลด
2. ดาวน์โหลดรูปภาพสำเร็จแล้ว
3. ภาพเริ่มดาวน์โหลด
3. ดาวน์โหลดรูปภาพสำเร็จแล้ว
4. ภาพเริ่มดาวน์โหลด
4. ดาวน์โหลดรูปภาพสำเร็จแล้ว
5. ภาพเริ่มดาวน์โหลด
5. ดาวน์โหลดรูปภาพสำเร็จแล้ว
6. ภาพเริ่มดาวน์โหลด
6. ดาวน์โหลดรูปภาพสำเร็จแล้ว
7. ภาพเริ่มดาวน์โหลด
7. ดาวน์โหลดรูปภาพสำเร็จแล้ว
[…]
48. รูปภาพเริ่มดาวน์โหลด
48. ดาวน์โหลดรูปภาพที่คัดลอกและดาวน์โหลดรูปภาพสำเร็จแล้ว:
[
{
'image_title': 'การ์ตูนมาร์เวล – วิกิพีเดีย',
'image_source_link': 'https://th.wikipedia.org/wiki/Marvel_Comics',
'image_link': 'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Marvel_Logo.svg/1200px-Marvel_Logo.svg.png'
},
{
'image_title': 'Marvel Universe – Wikipedia',
'image_source_link': 'https://th.wikipedia.org/wiki/Marvel_Universe',
'image_link': 'https://upload.wikimedia.org/wikipedia/en/1/19/Marvel_Universe_%28Civil_War%29.jpg'
},
{
'image_title': 'Marvel.com | เว็บไซต์อย่างเป็นทางการของ Marvel Movies, Characters, Comics, TV',
'image_source_link': 'https://www.marvel.com/',
'ลิงก์รูปภาพ': 'https://i.annihil.us/u/prod/marvel/images/OpenGraph-TW-1200×630.jpg'
},
{
'image_title': 'Marvel Entertainment – ​​YouTube',
'image_source_link': 'https://www.youtube.com/c/marvel',
'image_link': 'https://yt3.ggpht.com/fGvQjp1vAT1R4bAKTFLaSbdsfdYFDwAzVjeRVQeikH22bvHWsGULZdwIkpZXktcXZc5gFJuA3w=s900-ck-c0x00ffffff-no-rj'
},
{
'image_title': 'ภาพยนตร์และรายการมาร์เวล | ดิสนีย์+',
'image_source_link': 'https://www.disneyplus.com/brand/marvel',
'image_link': 'https://prod-ripcut-delivery.disney-plus.net/v1/variant/disney/DA2E198288BFCA56AB53340211B38DE7134E40E4521EDCAFE6FFB8CD69250DE9/scale?width=2880&aspectRatio=1.78&format=jpeg'
},
{
'image_title': 'ความรู้เบื้องต้นเกี่ยวกับ Marvel สำหรับมือใหม่ | สาย',
'image_source_link': 'https://www.wired.com/2012/03/an-intro-to-marvel-for-newbies/',
'image_link': 'https://media.wired.com/photos/5955ceabcbd9b77a41915cf6/master/pass/marvel-characters.jpg'
},
{
'image_title': 'วิธีดูภาพยนตร์ Marvel ทุกเรื่องตามลำดับเรื่อง – พาเหรด: ความบันเทิง สูตรอาหาร สุขภาพ ชีวิต วันหยุด',
'image_source_link': 'https://parade.com/1009863/alexandra-hurtado/marvel-movies-order/',
'image_link': 'https://parade.com/.image/t_share/MTkwNTgxMjkxNjk3NDQ4ODI4/marveldisney.jpg'
},
{
'image_title': 'การ์ตูนมาร์เวล | ประวัติศาสตร์ ตัวละคร ข้อเท็จจริง และภาพยนตร์ | บริแทนนิกา',
'image_source_link': 'https://www.britannica.com/topic/Marvel-Comics',
'image_link': 'https://cdn.britannica.com/62/182362-050-BD31B42D/Scarlett-Johansson-Black-Widow-Chris-Hemsworth-Thor.jpg'
},
{
'image_title': 'กัปตัน มาร์เวล (2019) – IMDb',
'image_source_link': 'https://www.imdb.com/title/tt4154664/',
'image_link': 'https://m.media-amazon.com/images/M/MV5BMTE0YWFmOTMtYTU2ZS00ZTIxLWE3OTEtYTNiYzBkZjViZThiXkEyXkFqcGdeQXVyODMzMzQ4OTI@._V1_FMjpg_UX1000_.jpg'
},
[…]
]

ลองดูที่ไฟล์ “Scraped_Images” เพื่อตรวจสอบภาพที่ดาวน์โหลด

Scraped Images

อ่านเพิ่มเติม: ประเภทของบริษัทและวิธีรวมธุรกิจเริ่มต้นของคุณ

บทสรุป

เราทำการคัดลอกและดาวน์โหลด Google รูปภาพซึ่งจำเป็นด้วยเหตุผลบางประการด้วยไพธอน หากคุณต้องการรับภาพที่คุณต้องการจาก Google โดยไม่ต้องเขียนโค้ดใดๆ ให้สำรวจ Zenserp API นี่คือเอกสารที่ทรงพลังและยอดเยี่ยมที่ได้รับการปรับปรุงอย่างต่อเนื่อง