Bạn có thể sử dụng Python để cạo một trang web không?
Quét web đã xuất hiện từ những ngày đầu của World Wide Web, nhưng việc quét các trang web hiện đại phụ thuộc nhiều vào công nghệ mới là điều không hề đơn giản. Trong bài viết này, Neal Barnett, Nhà phát triển phần mềm hàng đầu trình bày cách bạn có thể sử dụng Python và Selenium để loại bỏ các trang web sử dụng nhiều JavaScript, iframe và chứng chỉ Show
Chia sẻ Chia sẻQuét web đã xuất hiện từ những ngày đầu của World Wide Web, nhưng việc quét các trang web hiện đại phụ thuộc nhiều vào công nghệ mới là điều không hề đơn giản. Trong bài viết này, Neal Barnett, Nhà phát triển phần mềm hàng đầu trình bày cách bạn có thể sử dụng Python và Selenium để loại bỏ các trang web sử dụng nhiều JavaScript, iframe và chứng chỉ Tác giả Neal BarnettChuyên gia đã được xác minh về Kỹ thuật Neal là một chuyên gia tư vấn và cơ sở dữ liệu cấp cao, người đã mang đến nhiều kiến thức và kinh nghiệm hơn hai thập kỷ Giả sử bạn muốn lấy một số thông tin từ một trang web? . Nhưng nếu bạn muốn có một lượng lớn dữ liệu hàng ngày và càng nhanh càng tốt thì sao?. Trong những tình huống như vậy, sao chép và dán sẽ không hoạt động và đó là lúc bạn cần quét web Trong bài viết này, chúng ta sẽ thảo luận về cách thực hiện quét web bằng thư viện yêu cầu và thư viện beautifulsoup trong Python Mô-đun yêu cầuThư viện yêu cầu được sử dụng để thực hiện các yêu cầu HTTP tới một URL cụ thể và trả về phản hồi. Các yêu cầu Python cung cấp các chức năng sẵn có để quản lý cả yêu cầu và phản hồi Cài đặtYêu cầu cài đặt tùy thuộc vào loại hệ điều hành, lệnh cơ bản ở mọi nơi sẽ là mở một thiết bị đầu cuối lệnh và chạy, pip install requests Yêu cầuMô-đun yêu cầu Python có một số phương thức tích hợp để tạo các yêu cầu HTTP tới URI được chỉ định bằng cách sử dụng các yêu cầu GET, POST, PUT, PATCH hoặc HEAD. Yêu cầu HTTP có nghĩa là truy xuất dữ liệu từ một URI được chỉ định hoặc đẩy dữ liệu đến máy chủ. Nó hoạt động như một giao thức yêu cầu phản hồi giữa máy khách và máy chủ. Ở đây chúng tôi sẽ sử dụng yêu cầu GET. Phương thức GET được sử dụng để truy xuất thông tin từ máy chủ đã cho bằng URI đã cho. Phương thức GET gửi thông tin người dùng đã mã hóa được thêm vào yêu cầu trang. Thí dụ. Yêu cầu Python thực hiện yêu cầu GETPython3
https://www.geeksforgeeks.org/python-programming-language/ 2000 https://www.geeksforgeeks.org/python-programming-language/ 2001 https://www.geeksforgeeks.org/python-programming-language/ 2002
https://www.geeksforgeeks.org/python-programming-language/ 2003 https://www.geeksforgeeks.org/python-programming-language/ 2004 https://www.geeksforgeeks.org/python-programming-language/ 2005_______1_______6
https://www.geeksforgeeks.org/python-programming-language/ 2007 https://www.geeksforgeeks.org/python-programming-language/ 2005_______1_______9 đầu ra
đối tượng phản hồi
Khi một người đưa ra yêu cầu tới một URI, nó sẽ trả về một phản hồi. Đối tượng Phản hồi này về mặt python được trả về theo yêu cầu. phương thức (), phương thức là - nhận, đăng, đặt, v.v. Phản hồi là một đối tượng mạnh mẽ với nhiều chức năng và thuộc tính hỗ trợ chuẩn hóa dữ liệu hoặc tạo các phần mã lý tưởng. Ví dụ, phản ứng. status_code trả về mã trạng thái từ chính các tiêu đề và người ta có thể kiểm tra xem yêu cầu có được xử lý thành công hay không
Các đối tượng phản hồi có thể được sử dụng để ám chỉ nhiều tính năng, phương thức và chức năng
Thí dụ. Python yêu cầu đối tượng phản hồi
Python3
https://www.geeksforgeeks.org/python-programming-language/ 2000 https://www.geeksforgeeks.org/python-programming-language/ 2001 https://www.geeksforgeeks.org/python-programming-language/ 2002
pip install beautifulsoup48 https://www.geeksforgeeks.org/python-programming-language/ 2005 0 1 2 https://www.geeksforgeeks.org/python-programming-language/ 2005_______16_______4 đầu ra
https://www.geeksforgeeks.org/python-programming-language/ 200
Để biết thêm thông tin, hãy tham khảo Hướng dẫn yêu cầu Python của chúng tôi
Thư Viện Súp ĐẹpBeautifulSoup được sử dụng trích xuất thông tin từ các tệp HTML và XML. Nó cung cấp một cây phân tích và các chức năng để điều hướng, tìm kiếm hoặc sửa đổi cây phân tích này
Nét đặc trưng của Beautiful SoupBeautiful Soup là một thư viện Python được phát triển cho các dự án đảo ngược nhanh như quét màn hình. Ba tính năng làm cho nó mạnh mẽ 1. Beautiful Soup cung cấp một số phương thức đơn giản và cụm từ Pythonic để hướng dẫn, tìm kiếm và thay đổi cây phân tích cú pháp. một bộ công cụ để nghiên cứu một tài liệu và loại bỏ những gì bạn cần. Nó không mất nhiều mã để ghi lại một ứng dụng 2. Beautiful Soup tự động chuyển đổi các bản ghi đến thành Unicode và các biểu mẫu gửi đi thành UTF-8. Bạn không cần phải suy nghĩ về cách mã hóa trừ khi tài liệu không xác định cách mã hóa và Beautiful Soup không thể bắt được mã hóa. Sau đó, bạn chỉ cần chọn mã hóa ban đầu 3. Beautiful Soup nằm trên các trình phân tích cú pháp Python nổi tiếng như LXML và HTML, cho phép bạn thử các chiến lược phân tích cú pháp khác nhau hoặc thay đổi tốc độ để linh hoạt Cài đặt
Để cài đặt Beautifulsoup trên Windows, Linux hoặc bất kỳ hệ điều hành nào, người ta sẽ cần gói pip. Để kiểm tra cách cài đặt pip trên hệ điều hành của bạn, hãy xem – Cài đặt PIP – Windows. Linux. Bây giờ hãy chạy lệnh dưới đây trong thiết bị đầu cuối
pip install beautifulsoup4 Kiểm tra trang web
Trước khi lấy bất kỳ thông tin nào từ HTML của trang, chúng ta phải hiểu cấu trúc của trang. Điều này là cần thiết để được thực hiện để chọn dữ liệu mong muốn từ toàn bộ trang. Chúng tôi có thể làm điều này bằng cách nhấp chuột phải vào trang mà chúng tôi muốn cạo và chọn kiểm tra phần tử
Sau khi nhấp vào nút kiểm tra, Công cụ dành cho nhà phát triển của trình duyệt sẽ mở. Giờ đây, hầu hết tất cả các trình duyệt đều được cài đặt công cụ dành cho nhà phát triển và chúng tôi sẽ sử dụng Chrome cho hướng dẫn này.
Các công cụ của nhà phát triển cho phép xem Mô hình Đối tượng Tài liệu (DOM) của trang web. Nếu bạn không biết về DOM thì đừng lo lắng, hãy xem văn bản được hiển thị dưới dạng cấu trúc HTML của trang.
Phân tích cú pháp HTML
Sau khi nhận được HTML của trang, hãy xem cách phân tích mã HTML thô này thành một số thông tin hữu ích. Trước hết, chúng ta sẽ tạo một đối tượng BeautifulSoup bằng cách chỉ định trình phân tích cú pháp mà chúng ta muốn sử dụng
Ghi chú. Thư viện BeautifulSoup được xây dựng dựa trên các thư viện phân tích cú pháp HTML như html5lib, lxml, html. trình phân tích cú pháp, v.v. Vì vậy, đối tượng BeautifulSoup và chỉ định thư viện trình phân tích cú pháp có thể được tạo cùng một lúc
Thí dụ. Python BeautifulSoup Phân tích cú pháp HTML
Python3
7 8 import 7 Most Common Time Wastes During Software Development0
https://www.geeksforgeeks.org/python-programming-language/ 2000 https://www.geeksforgeeks.org/python-programming-language/ 2001 https://www.geeksforgeeks.org/python-programming-language/ 2002
https://www.geeksforgeeks.org/python-programming-language/ 2003 https://www.geeksforgeeks.org/python-programming-language/ 2004 https://www.geeksforgeeks.org/python-programming-language/ 2005_______1_______6
https://www.geeksforgeeks.org/python-programming-language/ 2002 https://www.geeksforgeeks.org/python-programming-language/ 2005 import 8đầu ra Thông tin này vẫn chưa hữu ích đối với chúng tôi, hãy xem một ví dụ khác để tạo ra một số bức tranh rõ ràng về điều này. Hãy thử trích xuất tiêu đề của trang Python3
7 8 import 7 Most Common Time Wastes During Software Development0
https://www.geeksforgeeks.org/python-programming-language/ 2000 https://www.geeksforgeeks.org/python-programming-language/ 2001 https://www.geeksforgeeks.org/python-programming-language/ 2002
https://www.geeksforgeeks.org/python-programming-language/ 2002
https://www.geeksforgeeks.org/python-programming-language/ 2005 # Making a GET request 9
https://www.geeksforgeeks.org/python-programming-language/ 2005 r 2
https://www.geeksforgeeks.org/python-programming-language/ 2005 r 5
đầu ra
tìm phần tửBây giờ, chúng tôi muốn trích xuất một số dữ liệu hữu ích từ nội dung HTML. Đối tượng soup chứa tất cả dữ liệu trong cấu trúc lồng nhau có thể được trích xuất theo chương trình. Trang web chúng tôi muốn cạo chứa rất nhiều văn bản, vì vậy bây giờ hãy cạo tất cả những nội dung đó. Trước tiên, hãy kiểm tra trang web chúng tôi muốn cạo. Tìm phần tử theo lớpTrong hình trên, chúng ta có thể thấy rằng tất cả nội dung của trang nằm dưới div với lớp entry-content. Chúng ta sẽ sử dụng lớp find. Lớp này sẽ tìm thẻ đã cho với thuộc tính đã cho. Trong trường hợp của chúng tôi, nó sẽ tìm thấy tất cả các div có lớp là nội dung mục nhập. Chúng tôi đã có tất cả nội dung từ trang web nhưng bạn có thể thấy rằng tất cả hình ảnh và liên kết cũng đã bị loại bỏ. Vì vậy, nhiệm vụ tiếp theo của chúng tôi là chỉ tìm nội dung từ HTML được phân tích cú pháp ở trên. Tiếp tục kiểm tra HTML của trang web của chúng tôi – We can see that the content of the page is under the tag. Now we have to find all the p tags present in this class. We can use the find_all class of the BeautifulSoup. Python3
7 8 import 7 Most Common Time Wastes During Software Development0
https://www.geeksforgeeks.org/python-programming-language/ 2000 https://www.geeksforgeeks.org/python-programming-language/ 2001 https://www.geeksforgeeks.org/python-programming-language/ 2002
https://www.geeksforgeeks.org/python-programming-language/ 2002
https://www.geeksforgeeks.org/python-programming-language/ 20006 = https://www.geeksforgeeks.org/python-programming-language/ 20008 https://www.geeksforgeeks.org/python-programming-language/ 20009_______1_______10 https://www.geeksforgeeks.org/python-programming-language/ 20011 = 1_______13https://www.geeksforgeeks.org/python-programming-language/ 2002 https://www.geeksforgeeks.org/python-programming-language/ 20015 = https://www.geeksforgeeks.org/python-programming-language/ 20017 https://www.geeksforgeeks.org/python-programming-language/ 20018 https://www.geeksforgeeks.org/python-programming-language/ 2002
https://www.geeksforgeeks.org/python-programming-language/ 2005_______1_______21 đầu ra
Tìm phần tử theo ID
Trong ví dụ trên, chúng tôi đã tìm thấy các phần tử theo tên lớp nhưng hãy xem cách tìm các phần tử theo id. Bây giờ với nhiệm vụ này, hãy cạo nội dung của thanh bên trái của trang. Bước đầu tiên là kiểm tra trang và xem thanh bên trái nằm dưới thẻ nào
The above image shows that the leftbar falls under the tag with id as main. Now lets’s get the HTML content under this tag. Now let’s inspect more of the page get the content of the leftbar.
We can see that the list in the leftbar is under the
Python3
7 8 import 7 Most Common Time Wastes During Software Development0
https://www.geeksforgeeks.org/python-programming-language/ 2000 https://www.geeksforgeeks.org/python-programming-language/ 2001 https://www.geeksforgeeks.org/python-programming-language/ 2002
https://www.geeksforgeeks.org/python-programming-language/ 2002
https://www.geeksforgeeks.org/python-programming-language/ 20040 https://www.geeksforgeeks.org/python-programming-language/ 20006 = https://www.geeksforgeeks.org/python-programming-language/ 20008 https://www.geeksforgeeks.org/python-programming-language/ 20009_______1_______10 https://www.geeksforgeeks.org/python-programming-language/ 20046 = https://www.geeksforgeeks.org/python-programming-language/ 20048 https://www.geeksforgeeks.org/python-programming-language/ 2002
https://www.geeksforgeeks.org/python-programming-language/ 20050 https://www.geeksforgeeks.org/python-programming-language/ 20051 = https://www.geeksforgeeks.org/python-programming-language/ 20053 https://www.geeksforgeeks.org/python-programming-language/ 20054 https://www.geeksforgeeks.org/python-programming-language/ 20010 https://www.geeksforgeeks.org/python-programming-language/ 20011 = 1_______58https://www.geeksforgeeks.org/python-programming-language/ 2002
https://www.geeksforgeeks.org/python-programming-language/ 20060 https://www.geeksforgeeks.org/python-programming-language/ 20015 = https://www.geeksforgeeks.org/python-programming-language/ 20063 https://www.geeksforgeeks.org/python-programming-language/ 20064 https://www.geeksforgeeks.org/python-programming-language/ 2002
https://www.geeksforgeeks.org/python-programming-language/ 2005_______1_______21 đầu ra
Trích xuất văn bản từ các thẻ
Trong các ví dụ trên, bạn hẳn đã thấy rằng trong khi cạo dữ liệu, các thẻ cũng bị loại bỏ nhưng nếu chúng ta chỉ muốn văn bản mà không có bất kỳ thẻ nào thì sao?. Đừng lo lắng, chúng ta sẽ thảo luận tương tự trong phần này. Chúng tôi sẽ sử dụng thuộc tính văn bản. Nó chỉ in văn bản từ thẻ. Chúng tôi sẽ sử dụng ví dụ trên và sẽ xóa tất cả các thẻ khỏi chúng
ví dụ 1. Xóa các thẻ khỏi nội dung của trang
Python3
7 8 import 7 Most Common Time Wastes During Software Development0
https://www.geeksforgeeks.org/python-programming-language/ 2000 https://www.geeksforgeeks.org/python-programming-language/ 2001 https://www.geeksforgeeks.org/python-programming-language/ 2002
https://www.geeksforgeeks.org/python-programming-language/ 2002
https://www.geeksforgeeks.org/python-programming-language/ 20006 = https://www.geeksforgeeks.org/python-programming-language/ 20008 https://www.geeksforgeeks.org/python-programming-language/ 20009_______1_______10 https://www.geeksforgeeks.org/python-programming-language/ 20011 = 1_______13https://www.geeksforgeeks.org/python-programming-language/ 2002
https://www.geeksforgeeks.org/python-programming-language/ 20095 = https://www.geeksforgeeks.org/python-programming-language/ 20017 https://www.geeksforgeeks.org/python-programming-language/ 20018_______1_______2
pip install beautifulsoup400 pip install beautifulsoup401 pip install beautifulsoup402 pip install beautifulsoup403 pip install beautifulsoup404 https://www.geeksforgeeks.org/python-programming-language/ 2005 pip install beautifulsoup406 đầu ra
ví dụ 2. Xóa các thẻ khỏi nội dung của thanh bên trái
Python3
7 8 import 7 Most Common Time Wastes During Software Development0
https://www.geeksforgeeks.org/python-programming-language/ 2000 https://www.geeksforgeeks.org/python-programming-language/ 2001 https://www.geeksforgeeks.org/python-programming-language/ 2002
https://www.geeksforgeeks.org/python-programming-language/ 2002
https://www.geeksforgeeks.org/python-programming-language/ 20040 https://www.geeksforgeeks.org/python-programming-language/ 20006 = https://www.geeksforgeeks.org/python-programming-language/ 20008 https://www.geeksforgeeks.org/python-programming-language/ 20009_______1_______10 https://www.geeksforgeeks.org/python-programming-language/ 20046 = https://www.geeksforgeeks.org/python-programming-language/ 20048 https://www.geeksforgeeks.org/python-programming-language/ 2002
https://www.geeksforgeeks.org/python-programming-language/ 20050 https://www.geeksforgeeks.org/python-programming-language/ 20051 = https://www.geeksforgeeks.org/python-programming-language/ 20053 https://www.geeksforgeeks.org/python-programming-language/ 20054 https://www.geeksforgeeks.org/python-programming-language/ 20010 https://www.geeksforgeeks.org/python-programming-language/ 20011 = 1_______58https://www.geeksforgeeks.org/python-programming-language/ 2002
https://www.geeksforgeeks.org/python-programming-language/ 20060 https://www.geeksforgeeks.org/python-programming-language/ 20095 = https://www.geeksforgeeks.org/python-programming-language/ 20063 https://www.geeksforgeeks.org/python-programming-language/ 20064_______1_______2
pip install beautifulsoup400 pip install beautifulsoup401 pip install beautifulsoup402 pip install beautifulsoup403 pip install beautifulsoup404 https://www.geeksforgeeks.org/python-programming-language/ 2005 pip install beautifulsoup406 đầu ra
Trích xuất liên kết
Cho đến bây giờ chúng ta đã thấy cách trích xuất văn bản, bây giờ hãy xem cách trích xuất các liên kết từ trang
Thí dụ. Liên kết trích xuất BeautifulSoup bằng Python
Python3
7 8 import 7 Most Common Time Wastes During Software Development0
https://www.geeksforgeeks.org/python-programming-language/ 2000 https://www.geeksforgeeks.org/python-programming-language/ 2001 https://www.geeksforgeeks.org/python-programming-language/ 2002
https://www.geeksforgeeks.org/python-programming-language/ 2002
pip install beautifulsoup476 pip install beautifulsoup400 pip install beautifulsoup478 pip install beautifulsoup402 pip install beautifulsoup480 pip install beautifulsoup481 pip install beautifulsoup482 pip install beautifulsoup404 https://www.geeksforgeeks.org/python-programming-language/ 2005 pip install beautifulsoup485 pip install beautifulsoup486 pip install beautifulsoup487 đầu ra
Trích xuất thông tin hình ảnh
Khi kiểm tra lại trang, chúng ta có thể thấy rằng hình ảnh nằm trong thẻ img và liên kết của hình ảnh đó nằm trong thuộc tính src. Xem hình ảnh bên dưới –
Thí dụ. Hình ảnh trích xuất Python BeautifulSoup
Python3
7 8 import 7 Most Common Time Wastes During Software Development0
https://www.geeksforgeeks.org/python-programming-language/ 2000 https://www.geeksforgeeks.org/python-programming-language/ 2001 https://www.geeksforgeeks.org/python-programming-language/ 2002
https://www.geeksforgeeks.org/python-programming-language/ 2002
06____238_______ 08
09 = 11 12 https://www.geeksforgeeks.org/python-programming-language/ 2002 pip install beautifulsoup400 15 pip install beautifulsoup402 17 pip install beautifulsoup404 19 = 21 22 https://www.geeksforgeeks.org/python-programming-language/ 2002 pip install beautifulsoup404 25 = 21 28 https://www.geeksforgeeks.org/python-programming-language/ 2002 pip install beautifulsoup404 31 32 33 34 35 pip install beautifulsoup404 pip install beautifulsoup400 15 pip install beautifulsoup402 40 pip install beautifulsoup404 https://www.geeksforgeeks.org/python-programming-language/ 2005 43 đầu ra
Cạo nhiều trang
Bây giờ, có thể phát sinh nhiều trường hợp khác nhau mà bạn có thể muốn lấy dữ liệu từ nhiều trang từ cùng một trang web hoặc nhiều URL khác nhau và viết mã thủ công cho từng trang web là một công việc tốn thời gian và tẻ nhạt. Thêm vào đó, nó xác định tất cả các nguyên tắc cơ bản của tự động hóa. Tât nhiên.
Để giải quyết vấn đề chính xác này, chúng ta sẽ thấy hai kỹ thuật chính sẽ giúp chúng ta trích xuất dữ liệu từ nhiều trang web
ví dụ 1. Lặp qua các số trangsố trang ở dưới cùng của trang web GeekforGeek
Hầu hết các trang web có các trang được đánh số từ 1 đến N. Điều này giúp chúng tôi thực sự đơn giản để lặp qua các trang này và trích xuất dữ liệu từ chúng vì các trang này có cấu trúc tương tự nhau. Ví dụ
số trang ở dưới cùng của trang web GeekforGeek
Tại đây, chúng ta có thể xem chi tiết trang ở cuối URL. Sử dụng thông tin này, chúng ta có thể dễ dàng tạo vòng lặp for lặp qua bao nhiêu trang tùy thích (bằng cách đặt trang/(i)/ vào chuỗi URL và lặp từ “i” cho đến N) và lấy tất cả dữ liệu hữu ích từ chúng. Đoạn mã sau sẽ giúp bạn hiểu rõ hơn về cách cạo dữ liệu bằng cách sử dụng Vòng lặp For trong Python
Python3
7 8 import 49
50 = 52
53____238_______ 55
58 import 5https://www.geeksforgeeks.org/python-programming-language/ 2002
61 = pip install beautifulsoup480 https://www.geeksforgeeks.org/python-programming-language/ 20009 7 Most Common Time Wastes During Software Development15 = 16_______6768 https://www.geeksforgeeks.org/python-programming-language/ 20010 70 71 Python có thể cạo các trang web không?Bộ sưu tập thư viện lớn. Python có một bộ thư viện khổng lồ như Numpy, Matlplotlib, Pandas, v.v. , cung cấp các phương thức và dịch vụ cho các mục đích khác nhau. Do đó, nó phù hợp để quét web và để thao tác thêm dữ liệu được trích xuất.
Là nó hợp pháp để cạo các trang web?Việc thu thập dữ liệu trên web là hoàn toàn hợp pháp nếu bạn thu thập dữ liệu có sẵn công khai trên internet . Tuy nhiên, một số loại dữ liệu được bảo vệ theo quy định quốc tế, vì vậy hãy cẩn thận khi lấy dữ liệu cá nhân, tài sản trí tuệ hoặc dữ liệu bí mật.
Python có tốt nhất để quét web không?Python là một lựa chọn tuyệt vời cho các nhà phát triển để xây dựng trình quét web vì nó bao gồm các thư viện gốc được thiết kế dành riêng cho việc quét web. Dễ hiểu- Đọc mã Python tương tự như đọc một câu lệnh tiếng Anh, làm cho cú pháp Python trở nên đơn giản để học. |