Quy trình xây dựng ứng dụng machine learning, deep learning hay AI có mấy bước. Một trong số đó là phân tích dữ liệu và tìm ra phần nào của dữ liệu có thể sử dụng được và phần nào không. Chúng ta cũng cần chọn các thuật toán học máy hoặc kiến trúc mạng thần kinh mà chúng ta cần sử dụng để giải quyết vấn đề. Chúng tôi thậm chí có thể chọn sử dụng học tăng cường hoặc học chuyển giao. Tuy nhiên, thường khách hàng không có dữ liệu có thể giải quyết vấn đề của họ. Thông thường, công việc của chúng tôi là lấy dữ liệu từ trang web sẽ được sử dụng bởi thuật toán học máy hoặc mạng nơ-ron
Bây giờ, chúng tôi cần sử dụng thông tin đó và lấy dữ liệu từ từng cá nhân liên kết . Chúng tôi cũng cần lưu trữ các tập tin. Trước tiên, hãy trích xuất các liên kết URL và tên hình ảnh cho từng hình ảnh từ biến aas .
image_info = []
for a in aas:
image_tag = a.findChildren["img"]
image_info.append[[image_tag[0]["src"], image_tag[0]["alt"]]]
Chúng tôi sử dụng chức năng findChildren cho từng thành phần trong aas array and append it’s attributes to image_info list. Here is the kết quả .
________số 8
Tuyệt vời, chúng tôi có liên kết và tên hình ảnh, tất cả những gì chúng tôi cần làm là tải xuống dữ liệu. Với mục đích đó, chúng tôi xây dựng hàm download_image
def download_image[image]:
response = requests.get[image[0], stream=True]
realname = ''.join[e for e in image[1] if e.isalnum[]]
file = open["./images_bs/{}.jpg".format[realname], 'wb']
response.raw.decode_content = True
shutil.copyfileobj[response.raw, file]
del response
Đây là một chức năng đơn giản. trước tiên, chúng tôi gửi yêu cầu tới URL mà chúng tôi đã trích xuất từ HTML. Sau đó, dựa trên tiêu đề, chúng tôi tạo tệp tên. Trong quá trình này, chúng tôi xóa tất cả khoảng trắng và ký tự đặc biệt. Cuối cùng, chúng tôi tạo một tệp có tên thích hợp và sao chép tất cả dữ liệu từ response into that file using shutil. In the end we call all the function for each image in the list:
pip install scrapy
0Bạn có thể tìm thấy kết quả trong thư mục xác định.
Tất nhiên, giải pháp này có thể được khái quát hóa hơn nữa và thực hiện dưới dạng một lớp. Một cái gì đó như thế này
pip install scrapy
1Nó khá giống nhau, bây giờ bạn có thể tạo nhiều đối tượng của lớp này với các URL và cấu hình khác nhau
2. Cạo ảnh bằng Scrapy
Công cụ khác mà chúng tôi có thể sử dụng để tải xuống hình ảnh là Scrapy . Mặc dù Beautiful Soup trực quan và rất đơn giản để sử dụng nhưng bạn vẫn cần sử dụng các thư viện khác và mọi thứ có thể trở nên lộn xộn . if we are working on bigger project. Scrapy rất phù hợp cho những trường hợp đó. Sau khi thư viện này được cài đặt, bạn có thể tạo dự án Scrapy mới bằng lệnh này.
pip install scrapy
2Điều này sẽ tạo cấu trúc dự án tương tự như cấu trúc dự án Django. Các tệp thú vị là cài đặt. py, các mặt hàng. py và ImgSpyder. py
Điều đầu tiên chúng ta cần làm là thêm tệp hoặc hình ảnh đường dẫn vào settings.py. Trong ví dụ này, chúng tôi thêm hình ảnh đường dẫn. Ngoài ra, vị trí lưu trữ hình ảnh cần được thêm vào. Đó là lý do tại sao chúng tôi thêm hai dòng này vào cài đặt.
pip install scrapy
3Sau đó, chúng ta chuyển sang các mục . py . Tại đây, chúng tôi xác định cấu trúc của các mục đã tải xuống. Trong trường hợp này, chúng tôi sử dụng Scrapy để tải xuống hình ảnh, tuy nhiên, đây là một công cụ mạnh mẽ để tải xuống các loại khác< . Đây là những gì trông giống như. of data as well. Here is what that looks like:
pip install scrapy
4Ở đây chúng ta đã xác định ImageItem kế thừa lớp Item . Chúng tôi xác định hai trường bắt buộc khi làm việc với Scrapy. We define two mandatory fields when we work with Đường dẫn hình ảnh . hình ảnh và images_url và chúng tôi định nghĩa chúng là scrapy.Field[]. Điều quan trọng cần lưu ý là các trường này phải có các tên này. Ngoài ra, hãy lưu ý rằng img_urls cần phải là một danh sách và cần chứa URL tuyệt đối . For this reason we have to create a function to transform relative URLs to absolute URLs. Finally, we implement trình thu thập dữ liệu trong ImgSpyder. py.
pip install scrapy
5Trong tệp này, chúng tôi tạo lớp ImgSpyder kế thừa Spider class from Scrapy. This class essentially is used for crawling and downloading data. You can see that each Spider có tên . Tên này được sử dụng để chạy quy trình sau này. Trường start_urls xác định trang web nào được thu thập dữ liệu. Khi chúng tôi bắt đầu Spider , nó sẽ gửi yêu cầu đến các trang được xác định trong start_urls .
Phản hồi được xử lý theo phương pháp phân tích mà chúng tôi ghi đè < . Sau đó, chúng tôi sử dụng in ImgSpider class. Effectively this means that, when we run this example, it sends request to http. // mã rubik. net rồi xử lý phản hồi theo phương thức parse . Trong phương pháp này, chúng tôi tạo phiên bản của ImageItem . Then we use css bộ chọn để trích xuất URL hình ảnh và lưu trữ chúng trong img_urls . Cuối cùng, chúng tôi đặt mọi thứ từ array. Finally, we put everything from img_urls mảng vào ImageItem đối tượng. Lưu ý rằng chúng ta không cần phải thêm bất cứ thứ gì vào trường hình ảnh của lớp, như vậy là đã xong by Scrapy. Let’s chạy trình thu thập dữ liệu này bằng lệnh này.
pip install scrapy
6Chúng tôi sử dụng tên được xác định trong lớp. Cách khác để chạy trình thu thập thông tin này là như thế này
pip install scrapy
74. Quét hình ảnh từ Google bằng Selenium
Trong cả hai trường hợp trước, chúng tôi đã khám phá cách chúng tôi có thể tải xuống hình ảnh từ một trang web. Tuy nhiên, nếu chúng tôi muốn tải xuống số lượng lớn hình ảnh, thực hiện tìm kiếm Google có lẽ là lựa chọn tốt nhất. Quá trình này cũng có thể được tự động hóa. Để tự động hóa, chúng ta có thể sử dụng Selenium
Công cụ này được sử dụng cho nhiều loại tự động hóa khác nhau, ví dụ, nó rất tốt cho tự động hóa thử nghiệm. Trong hướng dẫn này, chúng tôi sử dụng nó để thực hiện tìm kiếm cần thiết trong Google và tải xuống hình ảnh. Lưu ý rằng để tính năng này hoạt động, bạn phải cài đặt Google Chrome và sử dụng ChromeDriver tương ứng như được mô tả trong phần đầu tiên của bài viết này
Selenium rất dễ sử dụng, tuy nhiên trước tiên bạn cần nhập nó
pip install scrapy
8Khi điều này được thực hiện, bạn cần xác định đường dẫn đến ChromeDriver
pip install scrapy
9Sau khi bạn thực hiện việc này, Google Chrome sẽ tự động được mở. Từ thời điểm này, chúng ta có thể thao tác với biến wd bằng cách sử dụng biến này. Hãy lên google. com
pip install selenium
0Mát mẻ. Bây giờ, hãy triển khai một lớp thực hiện tìm kiếm trên google và tải xuống hình ảnh từ trang đầu tiên
pip install selenium
1Ok, đó là rất nhiều mã. Hãy điều tra nó từng mảnh một. Chúng tôi bắt đầu từ hàm tạo của lớp
pip install selenium
2Thông qua hàm tạo của lớp, chúng tôi tiêm webdriver. Ngoài ra, chúng tôi xác định số lượng hình ảnh từ trang đầu tiên mà chúng tôi muốn tải xuống. Tiếp theo, hãy quan sát phương thức công khai duy nhất của lớp này – srape_images[]
pip install selenium
3Phương thức này định nghĩa một luồng và sử dụng các phương thức khác từ lớp này. Lưu ý rằng một trong các tham số trong cụm từ truy vấn được sử dụng bên trong Tìm kiếm của Google. Ngoài ra, thư mục lưu trữ hình ảnh cũng được đưa vào phương pháp này. Dòng chảy diễn ra như thế này
- Chúng tôi tạo một thư mục cho tìm kiếm cụ thể
- Chúng tôi nhận được tất cả các liên kết từ hình ảnh bằng phương thức _get_info
- Chúng tôi tải xuống hình ảnh bằng phương thức _download_image
Hãy khám phá thêm một chút về các phương thức riêng tư này
pip install selenium
4Mục đích của phương thức _get_info là lấy các liên kết cần thiết của hình ảnh. Xin lưu ý rằng sau khi thực hiện tìm kiếm trong google, chúng tôi sử dụng find_elements_by_css_selector, với giá trị nhận dạng css thích hợp. Điều này rất giống với những điều chúng tôi đã làm với BeautifulSoup và Scrapy. Một điều nữa chúng ta nên chú ý là chúng ta cần nhấp vào từng hình ảnh để có được độ phân giải tốt của hình ảnh. Sau đó, chúng ta cần sử dụng lại find_elements_by_css_selector. Khi đã xong, liên kết chính xác sẽ được lấy. Phương pháp riêng tư thứ hai là _download_image