Thu thập hình ảnh bằng Python
Chúng tôi sẽ cần khá nhiều thư viện để trích xuất hình ảnh từ một trang web. Trong hướng dẫn về trình quét web cơ bản, chúng tôi đã sử dụng BeautifulSoup, Selenium và pandas để thu thập và xuất dữ liệu thành một. tệp csv. Chúng tôi sẽ thực hiện tất cả các bước trước đó để xuất dữ liệu đã loại bỏ (tôi. e. URL hình ảnh) Show
Tất nhiên, việc đưa các URL hình ảnh vào một danh sách là không đủ. Chúng tôi sẽ sử dụng một số thư viện khác để lưu trữ nội dung của URL thành một biến, chuyển đổi nó thành một đối tượng hình ảnh và sau đó lưu nó vào một vị trí đã chỉ định. Các thư viện mới mua của chúng tôi là Gối và yêu cầu Nếu bạn bỏ lỡ phần trước
Cài đặt các thư viện này là tốt
Ngoài ra, chúng tôi sẽ sử dụng các thư viện tích hợp để tải xuống hình ảnh từ một trang web, chủ yếu để lưu trữ các tệp đã mua của chúng tôi trong một thư mục được chỉ định Làm lại từ đầu
Quá trình trích xuất dữ liệu của chúng tôi bắt đầu gần như giống hệt nhau (chúng tôi sẽ nhập các thư viện nếu cần). Chúng tôi chỉ định trình điều khiển web ưa thích của mình, chọn URL từ đó chúng tôi sẽ loại bỏ các liên kết hình ảnh và tạo một danh sách để lưu trữ chúng trong đó. Khi trình điều khiển Chrome của chúng tôi đến URL, chúng tôi sử dụng biến 'nội dung' để trỏ đến nguồn trang và sau đó "cải thiện" nó bằng BeautifulSoup Trong phần hướng dẫn trước, chúng ta đã thực hiện tất cả các hành động bằng cách sử dụng các hàm tích hợp sẵn và do thư viện xác định. Mặc dù chúng tôi có thể thực hiện một hướng dẫn khác mà không cần xác định bất kỳ chức năng nào, nhưng đây là một công cụ cực kỳ hữu ích cho bất kỳ dự án nào
Chúng tôi sẽ di chuyển trình quét URL của chúng tôi vào một chức năng đã xác định. Ngoài ra, chúng tôi sẽ sử dụng lại cùng mã mà chúng tôi đã sử dụng trong “Hướng dẫn quét web Python. bài viết Step-by-Step” và tái sử dụng nó để cạo các URL đầy đủ Trước
Sau đó
Lưu ý rằng bây giờ chúng tôi nối thêm theo một cách khác. Thay vì nối thêm văn bản, chúng tôi sử dụng một chức năng khác 'get()' và thêm một tham số mới 'nguồn' vào đó. Chúng tôi sử dụng 'nguồn' để chỉ ra trường trong trang web nơi lưu trữ các liên kết hình ảnh. Chúng sẽ được lồng trong thẻ ‘src’, ‘data-src’ hoặc các thẻ HTML tương tự khác Tiến về phía trước với các chức năng được xác địnhGiả sử rằng URL mục tiêu của chúng tôi có các liên kết hình ảnh được lồng trong các lớp 'blog-card__link', 'img' và chính URL đó nằm trong thuộc tính 'src' của phần tử. Chúng tôi sẽ gọi chức năng mới được xác định của chúng tôi như vậy
Mã của chúng tôi bây giờ sẽ trông giống như thế này
Vì đôi khi chúng tôi muốn xuất dữ liệu đã loại bỏ và chúng tôi đã sử dụng pandas trước đó, nên chúng tôi có thể kiểm tra bằng cách xuất mọi thứ thành “. tệp csv”. Nếu cần, chúng tôi luôn có thể kiểm tra mọi lỗi ngữ nghĩa có thể xảy ra theo cách này ________số 8_______ Nếu chúng tôi chạy mã của mình ngay bây giờ, chúng tôi sẽ nhận được một “liên kết. csv” được xuất ngay vào thư mục đang chạy Giả sử rằng chúng tôi không gặp phải bất kỳ sự cố nào ở cuối phần trước, chúng tôi có thể tiếp tục tải xuống hình ảnh từ các trang web
Chúng tôi sẽ sử dụng thư viện yêu cầu để lấy nội dung được lưu trữ trong URL hình ảnh. Vòng lặp “for” của chúng tôi ở trên sẽ lặp qua danh sách ‘kết quả’ của chúng tôi 0chúng tôi vẫn chưa hoàn thành. Cho đến giờ, “hình ảnh” mà chúng ta có ở trên chỉ là một đối tượng Python 1Chúng tôi vẫn chưa hoàn thành vì chúng tôi cần tìm một nơi để lưu hình ảnh của mình. Tạo một thư mục “Test” cho mục đích của hướng dẫn này sẽ là lựa chọn dễ dàng nhất 2Để tất cả chúng cùng nhauHãy kết hợp tất cả các bước trước đó mà không có bất kỳ bình luận nào và xem nó hoạt động như thế nào. Lưu ý rằng gấu trúc bị mờ đi vì chúng tôi không trích xuất dữ liệu vào bất kỳ bảng nào. Chúng tôi giữ nó vì mục đích thuận tiện. Sử dụng nó nếu bạn cần xem hoặc kiểm tra lại kết quả đầu ra 3Để đạt hiệu quả, chúng tôi thoát trình điều khiển web của mình bằng cách sử dụng “trình điều khiển. thoát ()” sau khi truy xuất danh sách URL mà chúng tôi cần. Chúng tôi không còn cần trình duyệt đó nữa vì mọi thứ được lưu trữ cục bộ Chạy ứng dụng của chúng tôi sẽ xuất ra một trong hai kết quả
Rõ ràng, nhận được kết quả đầu tiên có nghĩa là chúng tôi đã hoàn thành. Chúng tôi sẽ nhận được kết quả thứ hai nếu chúng tôi xóa trang /blog/ của mình. Trong hầu hết các trường hợp, việc khắc phục kết quả thứ hai sẽ mất một ít thời gian, mặc dù đôi khi có thể có những tình huống khó khăn hơn Bất cứ khi nào chúng tôi sử dụng thư viện yêu cầu để gửi yêu cầu đến máy chủ đích, tác nhân người dùng mặc định “Python-urllib/version. số” được chỉ định. Một số dịch vụ web có thể chặn các tác nhân người dùng này một cách cụ thể vì chúng được đảm bảo là bot. May mắn thay, thư viện yêu cầu cho phép chúng tôi chỉ định bất kỳ tác nhân người dùng nào (hoặc toàn bộ tiêu đề) mà chúng tôi muốn 4Thêm một tác nhân người dùng sẽ là đủ cho hầu hết các trường hợp. Có nhiều trường hợp phức tạp hơn khi máy chủ có thể cố gắng kiểm tra các phần khác của tiêu đề HTTP để xác nhận rằng đó là người dùng chính hãng. Tham khảo hướng dẫn của chúng tôi về các tiêu đề HTTP và thực hành quét web để biết thêm thông tin về cách sử dụng chúng để trích xuất hình ảnh từ các trang web trực tuyến Dọn dẹpNhiệm vụ của chúng tôi đã hoàn thành nhưng mã vẫn còn lộn xộn. Chúng ta có thể làm cho ứng dụng của mình dễ đọc hơn và có thể tái sử dụng bằng cách đặt mọi thứ vào các chức năng đã xác định 5Mọi thứ hiện được lồng trong các chức năng được xác định rõ ràng và có thể được gọi khi nhập. Nếu không, nó sẽ chạy như trước đây kết thúcBằng cách sử dụng mã được nêu ở trên, giờ đây bạn có thể hoàn thành các tác vụ quét hình ảnh cơ bản, chẳng hạn như tải xuống tất cả hình ảnh từ một trang web trong một lần. Nâng cấp trình quét hình ảnh có thể được thực hiện theo nhiều cách khác nhau, hầu hết chúng tôi đã nêu trong phần trước. Chúng tôi khuyên bạn nên nghiên cứu bài viết Yêu cầu Python của chúng tôi để tăng tốc hơn nữa với thư viện được sử dụng trong hướng dẫn này. Hãy xem blog của chúng tôi để biết thêm chi tiết về cách bắt đầu thu thập dữ liệu và xem công cụ quét web đa năng của riêng chúng tôi Làm cách nào để trích xuất hình ảnh từ trang web bằng Python?Để trích xuất tất cả các liên kết hình ảnh, hãy sử dụng. . từ BeautifulSoup nhập BeautifulSoup nhập urllib2 nhập lại html_page = urllib2. urlopen("http. // hình ảnh. com") cho img trong súp. findAll('img') hình ảnh. nối thêm (img. nhận ('src')) Làm cách nào để cạo và tải xuống tất cả hình ảnh từ một trang web bằng Python?Một mã đơn giản để thực hiện tải xuống. văn bản, 'html. trình phân tích cú pháp') image_tags = súp. find_all('img') url = [img['src'] cho img trong image_tags] cho url trong url. tên tệp = lại. tìm kiếm(r'/([\w_-]+[. ]( jpg. gif. png))$', url) nếu không phải tên tệp. print("Biểu thức chính quy không khớp với url. {}"
Bạn có thể Webscrape bằng Python không?Thay vì xem trang web việc làm mỗi ngày, bạn có thể sử dụng Python để giúp tự động hóa các phần lặp đi lặp lại trong tìm kiếm việc làm của bạn. Quét web tự động có thể là một giải pháp để tăng tốc quá trình thu thập dữ liệu. Bạn viết mã của mình một lần và nó sẽ nhận được thông tin bạn muốn nhiều lần và từ nhiều trang
Làm cách nào để cạo hình ảnh trong Python Selenium?Tìm kiếm hình ảnh trên web bằng Python và Selenium . Cài đặt gói Selenium Nhập thư viện Cài đặt trình điều khiển web Khởi chạy Trình duyệt và Mở URL Tải hình ảnh Xem lại cấu trúc HTML của trang web Tìm và trích xuất hình ảnh Tải xuống hình ảnh |