В сети есть много разных типов контента: изображения, видео, текст, аудио и многое другое. Вы можете использовать Python для загрузки данных из Интернета.
Программа ниже загрузки изображения из поисковых систем Google и Baidu.
Почему это? Потому что они большие архивы изображения.
Его можно назвать так с ключевым словом:
download_baidu(word) download_google(word)
Код для скрепления изображений:
#!/usr/bin/python3 #-*- coding:utf-8 -*- import re import requests from bs4 import BeautifulSoup from urllib.parse import urlparse import os def download_baidu(keyword): url = 'https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word='+word+'&ct=201326592&v=flip' result = requests.get(url) html = result.text pic_url = re.findall('"objURL":"(.*?)",',html,re.S) i = 0 for each in pic_url: print(pic_url) try: pic= requests.get(each, timeout=10) except requests.exceptions.ConnectionError: print ('exception') continue string = 'pictures'+keyword+'_'+str(i) + '.jpg' fp = open(string,'wb') fp.write(pic.content) fp.close() i += 1 def download_google(word): url = 'https://www.google.com/search?q=' + word + '&client=opera&hs=cTQ&source=lnms&tbm=isch&sa=X&ved=0ahUKEwig3LOx4PzKAhWGFywKHZyZAAgQ_AUIBygB&biw=1920&bih=982' page = requests.get(url).text soup = BeautifulSoup(page, 'html.parser') for raw_img in soup.find_all('img'): link = raw_img.get('src') os.system("wget " + link) if __name__ == '__main__': word = input("Input key word: ") download_baidu(word) #download_google(word)
Это загружает изображения в тот же каталог. Недостатком этой реализации является то, что он не использует резьбу. Резьба ускоряет процесс загрузки.
Если вы хотите загрузить много изображений, вы должны использовать резьбу. Скорость с резьбой, хорошо, может быть, не так быстро.
В любом случае, это интересно сравнить результаты поиска для Google и Baidu.
Ресурсы Python:
- https://pythonprogramminglanguage.com
- https://www.tutorialspoint.com/python/
- https://pythonbasics.org
- https://python.org
Оригинал: “https://dev.to/petercour/image-scraping-with-python-330a”