Lấy dữ liệu từ web bằng python

     
Internet là một nguồn dữ liệu khổng lồ cho bất kỳ lĩnh vực nghiên cứu hoặc sở thích cá nhân nào. Scraping Python Web bằng cách sử dụng Beautiful Soup được sử dụng để thu thập dữ liệu từ internet. Các yêu cầu của thư viện Python và Beautiful Soup là những công cụ mạnh mẽ được sử dụng để quét web. Nếu bạn biết những điều cơ bản về Python và HTML, thì bạn có thể tiếp tục với hướng dẫn này. Chúng tôi có thể giải quyết một số ví dụ thực hành trong hướng dẫn này, điều này sẽ giúp bạn tìm hiểu thêm về cách tìm kiếm trên web.

Bạn đang xem: Lấy dữ liệu từ web bằng python


Bạn sẽ học được gì từ hướng dẫn này?Tại sao chúng ta cần tìm kiếm web?Scraping Python Web bằng cách sử dụng Beautiful SoupTại sao cần phải loại bỏ dữ liệu?Những thách thức là gì?SỰ ĐA DẠNGĐộ bềnAPI duyệt web PythonĐiều chỉnh trang web Việc làm (Bản trình diễn Scraping Web Python)Phần 1: Kiểm tra nguồn dữ liệuKhám phá trang webHiểu thông tin được mã hóa trong URLURL cơ sởTham số truy vấnKhởi đầuThông tinmáy phân lyKiểm tra trang webPhần 2: Chỉnh sửa trang web cho nội dung HTMLTrang web tĩnhTrang web ẩnTrang web độngPhần 3: Phân tích cú pháp mã HTML bằng Beautiful SoupTìm các phần tử theo idTìm các phần tử theo Tên lớpLọc nội dung văn bản từ các phần tử HTMLTìm phần tử theo tên lớp và nội dung văn bảnChuyển một chức năng cho một phương pháp súp đẹpTrích xuất các thuộc tính từ các phần tử HTMLKết luận

Bạn sẽ học được gì từ hướng dẫn này?

Cách cạo và phân tích cú pháp dữ liệu từ web bằng cách sử dụng các yêu cầu thư viện python và Beautiful Soup.Một ý tưởng về kết thúc đường ống nạo web.Như một ví dụ thực tế, chúng tôi sẽ viết mã bằng Python để truy xuất các đề nghị công việc từ trang web và chỉ in thông tin có liên quan trong bảng điều khiển.

Sử dụng cùng một kỹ thuật và các công cụ tương tự, bạn có thể lấy dữ liệu từ bất kỳ trang web tĩnh nào có sẵn trên world wide web.

Tại sao chúng ta cần tìm kiếm web?

Internet là một nguồn dữ liệu khổng lồ cho bất kỳ lĩnh vực nghiên cứu nào hoặc cho sở thích cá nhân của bạn. Chúng tôi cần quét web để thu thập dữ liệu từ internet để giúp công việc của chúng tôi trở nên dễ dàng hơn. Tính năng quét web rất hữu ích, đặc biệt khi bạn cần trích xuất một lượng lớn dữ liệu từ internet. Dữ liệu được trích xuất có thể được lưu trên máy tính cục bộ của bạn hoặc vào cơ sở dữ liệu.Một số trang web sẽ không cho phép chúng tôi lưu bản sao dữ liệu hiển thị trên trình duyệt web để sử dụng cho mục đích cá nhân. Trong trường hợp đó, chúng tôi phải sao chép và dán dữ liệu theo cách thủ công - một công việc khó khăn có thể mất hàng giờ để hoàn thành nếu bạn có dữ liệu lớn cần sao chép. Thay vì thực hiện công việc theo cách thủ công, chúng tôi sẽ tự động hóa quy trình này bằng cách quét web.Các công cụ mạnh mẽ được sử dụng để quét web là yêu cầu thư viện Python và Beautiful Soup. Trong hướng dẫn này, chúng ta sẽ tìm hiểu về Python Web Scraping bằng cách sử dụng Beautiful Soup.

Scraping Python Web bằng cách sử dụng Beautiful Soup

Tính năng quét web rất hữu ích khi bạn cần trích xuất một lượng lớn dữ liệu từ internet. Dữ liệu được trích xuất có thể được lưu trên máy tính cục bộ của bạn hoặc vào cơ sở dữ liệu.Một số trang web sẽ không cho phép chúng tôi lưu bản sao dữ liệu hiển thị trên trình duyệt web để sử dụng cho mục đích cá nhân. Trong trường hợp đó, chúng tôi phải sao chép và dán dữ liệu theo cách thủ công - một công việc khó khăn có thể mất hàng giờ để hoàn thành nếu bạn có dữ liệu lớn cần sao chép. Thay vì sao chép dữ liệu theo cách thủ công từ các trang web, chúng tôi có thể tự động hóa quá trình này với sự trợ giúp của việc quét web. Phần mềm duyệt web sẽ thực hiện công việc thủ công tương tự cho chúng ta với ít thời gian hơn.Tuy nhiên, một số trang web sẽ không cho phép trình cạo tự động quét dữ liệu của họ trong khi những trang web khác không quan tâm. Trước khi thu thập dữ liệu từ trang web, hãy đảm bảo rằng bạn không vi phạm bất kỳ Điều khoản dịch vụ nào. Xin vui lòng kiểm tra Quan điểm pháp lý về việc thu thập dữ liệu từ web hiện đại giải thích thêm về các khía cạnh pháp lý của việc tìm kiếm trên web,

Tại sao cần phải loại bỏ dữ liệu?

Giả sử bạn đang tìm kiếm một sản phẩm cụ thể trên đàn bà gan dạ. Bạn chỉ không muốn mua với bất kỳ giá nào. Bạn muốn mua khi có chiết khấu nhất định về giá. Amazon công bố các ưu đãi về sản phẩm đó ngay bây giờ và sau đó. Bạn tiếp tục kiểm tra nó mỗi ngày nhưng đó không phải là cách hiệu quả để sử dụng thời gian của bạn.

Khi bạn cần trích xuất dữ liệu lớn từ các trang web thường xuyên được cập nhật nội dung mới, bạn sẽ mất rất nhiều thời gian để tìm kiếm, cuộn và nhấp chuột. Công việc quét web thủ công là công việc lặp đi lặp lại và bạn sẽ mất rất nhiều thời gian cho việc đó.Đây là Python đến để giải cứu bạn. Thay vì kiểm tra giá của sản phẩm mỗi ngày, bạn có thể viết một đoạn mã Python để tự động hóa quá trình lặp đi lặp lại này. Để tăng tốc quá trình thu thập dữ liệu, giải pháp là Gỡ trang web tự động. Bạn sẽ viết tập lệnh Python của mình chỉ sau khi điều hướng tập lệnh sẽ lấy cho bạn thông tin bạn cần bao nhiêu lần và từ bao nhiêu trang bạn muốn.Trong thế giới của Internet, rất nhiều nội dung mới được tải lên mỗi giây. Bạn có thể thu thập những dữ liệu đó, cho dù đó là để tìm việc làm cho mục đích cá nhân, tính năng tự động quét web sẽ giúp bạn đạt được mục tiêu của mình.

Những thách thức là gì?

Mỗi trang web là khác nhau bởi vì có rất nhiều công nghệ mới phát sinh mỗi ngày và trang web tiếp tục phát triển. Điều này đặt ra những thách thức bạn sẽ phải đối mặt khi cố gắng quét một trang web.

SỰ ĐA DẠNG

API duyệt web Python

API là sự thay thế cho việc tìm kiếm trên web. Viết tắt của API là Giao diện lập trình thay thế. Một số nhà cung cấp trang web cung cấp API để truy cập dữ liệu của họ theo cách được xác định trước. Với API, bạn có thể truy cập dữ liệu trực tiếp bằng XML và JSON mà không cần phân tích cú pháp HTML.HTML xác định cấu trúc của nội dung web. Khi HTML của trang web thay đổi, API vẫn ổn định, không giống như tập lệnh quét tự động. Vì vậy, các API hiệu quả hơn việc thu thập dữ liệu từ internet.Tuy nhiên, những thách thức của việc quét web cũng áp dụng cho các API. Ngoài ra, rất khó để kiểm tra cấu trúc của API nếu tài liệu được cung cấp thiếu chất lượng.API không phải là một phần của hướng dẫn này. Hãy tiếp tục với việc tìm kiếm trang web.

Xem thêm: "Laptop 10 Inch" Giá Tốt Tháng 4, 2021 Laptop, 18 Laptop Mini Giá Rẻ, Nhỏ Gọn Nhất, Dễ Mang Theo

Điều chỉnh trang web Việc làm (Bản trình diễn Scraping Web Python)

Phần 1: Kiểm tra nguồn dữ liệu

Chúng tôi có thể bắt đầu cạo bằng cách mở trang web mà bạn muốn cạo, trong trình duyệt yêu thích của bạn. Để trích xuất thông tin, bạn sẽ cần phải hiểu cấu trúc của trang web việc làm.Khám phá trang webTruy cập trang web quái vật và tìm kiếm công việc của nhà phát triển phần mềm ở Dublin bằng cách sử dụng tìm kiếm gốc của trang web quái vật.

*
PinViệc tìm kiếm trả về rất nhiều danh sách việc làm. Bạn có thể xem danh sách các công việc ở phía bên trái. Khi bạn nhấp vào một công việc cụ thể, bạn có thể xem mô tả chi tiết hơn về công việc đó ở phía bên phải. Ngoài ra, khi bạn nhấp vào một công việc cụ thể, hãy thông báo rằng URL trong thanh địa chỉ của trình duyệt cũng thay đổi.
*
PinHiểu thông tin được mã hóa trong URLURL chứa nhiều thông tin được mã hóa. Bạn sẽ dễ dàng làm việc với việc tìm kiếm trên web hơn nhiều nếu bạn đã quen với cách hoạt động của các URL và những thông tin mà nó chứa. Đây là URL của trang web chúng tôi đang sử dụng cho hướng dẫn này:

https://www.monster.com/jobs/search/?q=Software-Developer&where=DublinChúng tôi có thể chia URL thành hai phần chính:URL cơ sởĐường dẫn đến chức năng tìm kiếm của trang web đại diện cho URL cơ sở. URL cơ sở trong ví dụ của chúng tôi là “https://www.monster.com/jobs/search/”Tham số truy vấnCác giá trị bổ sung được khai báo trên trang web đại diện cho các tham số truy vấn. Các tham số truy vấn trong ví dụ của chúng tôi là “? Q = Software-Developer & where = Dublin”. Chúng ta cũng có thể nói rằng mọi thứ hiện diện sau "?" trong URL là các tham số truy vấn.Bạn có thể nhận thấy rằng URL cơ sở vẫn giữ nguyên. Các tham số truy vấn thay đổi dựa trên tiêu chí tìm kiếm. Việc sử dụng các tham số truy vấn tương tự như cách các chuỗi truy vấn được sử dụng trong cơ sở dữ liệu để tìm nạp các bản ghi cụ thể.Thông số truy vấn thường được tạo thành từ 3 thứ sau:

Khởi đầu

Dấu chấm hỏi "?" cho biết thời điểm bắt đầu tham số truy vấn.Thông tinTham số truy vấn chứa thông tin được mã hóa theo cặp khóa-giá trị. Dấu bằng nối các khóa và giá trị tương ứng với nhau (key = value).máy phân lyURL có thể chứa nhiều tham số truy vấn. Ký hiệu và (&) phân tách từng tham số truy vấn.Kiểm tra URL của chúng tôi dựa trên thông tin trên. URL của chúng tôi có hai cặp khóa-giá trị:q = Nhà phát triển phần mềm, xác định loại công việc chúng tôi đang tìm kiếm.where = Dublin, đại diện cho vị trí mà chúng tôi đang tìm kiếm.Nếu bạn thay đổi tiêu chí tìm kiếm, các tham số truy vấn sẽ được thay đổi tương ứng. Hãy kiểm tra điều đó bằng cách thay đổi các tiêu chí tìm kiếm như bên dưới:

*
URL sẽ là:https://www.monster.com/jobs/search/?q=Software-Developer&where=IndiaBạn cũng có thể thay đổi các tham số truy vấn trong URL, tiêu chí tìm kiếm sẽ được thay đổi tương ứng. Thay đổi URL và kiểm tra thanh tìm kiếm.https://www.monster.com/jobs/search/?q=Software-Developer&where=AustraliaKết quả tìm kiếm có thể được sửa đổi bằng cách thay đổi dữ liệu trong thanh tìm kiếm hoặc tham số truy vấn trong URL. Bằng cách hiểu thông tin có trong URL, bạn có thể lấy dữ liệu từ trang web.Kiểm tra trang webBạn cần hiểu cấu trúc của một trang web, để truy xuất dữ liệu bạn muốn. HTML chịu trách nhiệm về cách trang web được cấu trúc để hiển thị. Bạn sẽ nhận được phản hồi HMTL của một trang web bằng Công cụ dành cho nhà phát triển.

Tất cả các trình duyệt web hiện đại đều bao gồm một bộ công cụ dành cho nhà phát triển cũng mạnh mẽ. Với những công cụ này, bạn có thể thực hiện rất nhiều việc, từ việc kiểm tra HTML, CSS và JavaScript hiện đang tải đến hiển thị nội dung nào mà trang đã yêu cầu và thời gian tải chúng.Trong hướng dẫn này, chúng ta sẽ xem cách làm việc với các công cụ dành cho nhà phát triển của trình duyệt Chrome. Trong trình duyệt Chrome, có 2 cách để mở các công cụ dành cho nhà phát triển.Một tùy chọn nằm trong thanh menu, View-> Developer-> Developer tools.Một tùy chọn khác là nhấp chuột phải vào trang web và chọn Kiểm tra.Bạn có thể tương tác với DOM của trang web thông qua các công cụ dành cho nhà phát triển. DOM là một giao diện đa nền tảng và độc lập với ngôn ngữ cho phép các chương trình và tập lệnh truy cập động và cập nhật nội dung, cấu trúc và kiểu của tài liệu. Bằng cách chọn tab Phần tử trong công cụ dành cho nhà phát triển, bạn có thể bắt đầu đào sâu vào DOM của trang web. Bạn có thể chỉnh sửa, mở rộng và thu gọn các phần tử trong trình duyệt.

*
PinNhững gì bạn đang thấy không gì khác ngoài cấu trúc HTML của trang web. Nếu bạn muốn kiểm tra một công việc cụ thể, hãy nhấp chuột phải vào công việc đó và chọn kiểm tra. Bạn sẽ được đưa đến nơi phần tử nằm trong DOM. Bạn có thể di chuột qua nội dung HTML và các thay đổi tương ứng sẽ được đánh dấu trên trang web.

Nếu bạn hiểu cấu trúc của trang web một cách tốt hơn, bạn sẽ dễ dàng thu thập dữ liệu hơn. Nếu bạn lo lắng về điều này, đừng lo lắng, chúng tôi sẽ chỉ trích dẫn những phần thú vị với Beautiful Soup.

Phần 2: Chỉnh sửa trang web cho nội dung HTML

Vì bạn đã có ý tưởng cơ bản về những gì chúng tôi đang làm việc, hãy đi vào phần python. Bước đầu tiên, chúng ta cần lấy mã HTML của trang web vào tập lệnh Python của mình. Đối với tác vụ này, chúng ta cần thư viện yêu cầu của Python. Hãy cài đặt các yêu cầu bằng cách gõ lệnh dưới đây vào thiết bị đầu cuối của bạn.pip install requestsĐi tới trình soạn thảo văn bản của bạn và mở một tệp python mới. Dưới đây là đoạn mã để lấy mã HTML của một trang web sử dụng Python.import requestsURL='https://www.monster.com/jobs/search/?q=Software-Developer&where=Dublin'page=requests.get(URL)URL của trang web mà chúng tôi sắp sửa được gán cho biến URL. Trong đoạn mã trên, chúng tôi đang thực hiện một yêu cầu HTTP đến URL. Chúng tôi đang nhận được phản hồi từ máy chủ và lưu nó vào một biến được gọi là trang. Bạn có thể xem dữ liệu HTML mà chúng tôi nhận được, bằng cách in thuộc tính nội dung.print(page.content)Đầu ra không có gì khác ngoài nội dung HTML mà chúng ta đã thấy trong tab phần tử của các công cụ dành cho nhà phát triển. Nếu bạn muốn cải thiện cấu trúc của cách mã HTML được hiển thị trong bảng điều khiển, thì hãy sử dụng pprint thay vì in. Nếu bạn muốn tìm hiểu thêm về pprint thì hãy xem tài liệu Python chính thức.

import requestsimport pprintURL='https://www.monster.com/jobs/search/?q=Software-Developer&where=Dublin'page=requests.get(URL)pp = pprint.PrettyPrinter()pp.pprint(page.content)Trang web tĩnhChúng tôi đang tìm kiếm một trang web tĩnh cho hướng dẫn này. Máy chủ gửi lại tất cả nội dung HTML, người dùng có thể nhìn thấy.Dưới đây là mã HTML của một tin tuyển dụng cụ thể. Mã trông dài và khó hiểu.