Mã nguồn web python

Lượng dữ liệu đáng kinh ngạc trên Internet là một nguồn tài nguyên phong phú cho bất kỳ lĩnh vực nghiên cứu hoặc sở thích cá nhân nào. Để thu thập dữ liệu đó một cách hiệu quả, bạn sẽ cần phải có kỹ năng quét web. Các thư viện Python

$ python -m pip install requests
2 và Beautiful Soup là những công cụ mạnh mẽ cho công việc. Nếu bạn thích tìm hiểu bằng các ví dụ thực hành và có hiểu biết cơ bản về Python và HTML, thì hướng dẫn này là dành cho bạn

Trong hướng dẫn này, bạn sẽ học cách

  • Kiểm tra cấu trúc HTML của trang web mục tiêu của bạn bằng các công cụ dành cho nhà phát triển của trình duyệt của bạn
  • Giải mã dữ liệu được mã hóa trong URL
  • Sử dụng
    $ python -m pip install requests
    
    2 và Beautiful Soup để thu thập và phân tích dữ liệu từ Web
  • Bước qua một đường ống cạo web từ đầu đến cuối
  • Xây dựng tập lệnh tìm nạp lời mời làm việc từ Web và hiển thị thông tin liên quan trong bảng điều khiển của bạn

Thực hiện dự án này sẽ cung cấp cho bạn kiến ​​thức về quy trình và công cụ bạn cần để loại bỏ bất kỳ trang web tĩnh nào trên World Wide Web. Bạn có thể tải xuống mã nguồn dự án bằng cách nhấp vào liên kết bên dưới

Nhận mã mẫu. Nhấp vào đây để lấy mã mẫu mà bạn sẽ sử dụng cho dự án và các ví dụ trong hướng dẫn này

Bắt đầu nào

Quét web là gì?

Quét web là quá trình thu thập thông tin từ Internet. Ngay cả việc sao chép và dán lời bài hát yêu thích của bạn cũng là một hình thức quét web. Tuy nhiên, từ “web scraping” thường đề cập đến một quá trình liên quan đến tự động hóa. Một số trang web không thích điều đó khi các công cụ dọn dẹp tự động thu thập dữ liệu của họ, trong khi những trang web khác thì không

Nếu bạn đang cạo một trang một cách tôn trọng vì mục đích giáo dục, thì bạn sẽ không gặp bất kỳ vấn đề gì. Tuy nhiên, bạn nên tự mình thực hiện một số nghiên cứu và đảm bảo rằng mình không vi phạm bất kỳ Điều khoản dịch vụ nào trước khi bắt đầu một dự án quy mô lớn

Loại bỏ các quảng cáo

Lý do quét web

Giả sử bạn là người lướt sóng, cả trên mạng và ngoài đời thực, và bạn đang tìm việc làm. Tuy nhiên, bạn không tìm kiếm bất kỳ công việc nào. Với tư duy của một người lướt sóng, bạn đang chờ đợi cơ hội hoàn hảo để lăn theo cách của mình

Có một trang web việc làm cung cấp chính xác các loại công việc bạn muốn. Thật không may, một vị trí mới chỉ xuất hiện một lần trong một lần trăng xanh và trang web không cung cấp dịch vụ thông báo qua email. Bạn nghĩ đến việc kiểm tra nó hàng ngày, nhưng đó không phải là cách thú vị và hiệu quả nhất để sử dụng thời gian của bạn

Rất may, thế giới cung cấp những cách khác để áp dụng tư duy của người lướt só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

Ngược lại, khi bạn cố lấy thông tin mình muốn theo cách thủ công, bạn có thể mất nhiều thời gian nhấp, cuộn và tìm kiếm, đặc biệt nếu bạn cần một lượng lớn dữ liệu từ các trang web thường xuyên được cập nhật nội dung mới. Quét web thủ công có thể mất nhiều thời gian và lặp đi lặp lại

Có quá nhiều thông tin trên Web và thông tin mới liên tục được bổ sung. Bạn có thể sẽ quan tâm đến ít nhất một số dữ liệu đó và phần lớn trong số đó chỉ có sẵn để lấy. Cho dù bạn đang thực sự tìm việc hay bạn muốn tải xuống tất cả lời bài hát của nghệ sĩ yêu thích của mình, tính năng quét web tự động có thể giúp bạn hoàn thành mục tiêu của mình

Những thách thức của Web Scraping

Web đã phát triển tự nhiên từ nhiều nguồn. Nó kết hợp nhiều công nghệ, phong cách và cá tính khác nhau, và nó vẫn tiếp tục phát triển cho đến ngày nay. Nói cách khác, Web là một mớ hỗn độn. Vì điều này, bạn sẽ gặp phải một số thách thức khi tìm kiếm trên Web

  • Đa dạng. Mỗi trang web là khác nhau. Mặc dù bạn sẽ gặp phải các cấu trúc chung lặp lại, nhưng mỗi trang web là duy nhất và sẽ cần xử lý riêng nếu bạn muốn trích xuất thông tin liên quan

  • Độ bền. Các trang web liên tục thay đổi. Giả sử bạn đã xây dựng một công cụ quét web mới sáng bóng tự động chọn những gì bạn muốn từ tài nguyên mà bạn quan tâm. Lần đầu tiên bạn chạy tập lệnh của mình, nó hoạt động hoàn hảo. Nhưng khi bạn chạy cùng một tập lệnh chỉ trong một thời gian ngắn sau đó, bạn gặp phải một chồng truy nguyên dài và chán nản

Các tập lệnh không ổn định là một kịch bản thực tế, vì nhiều trang web đang được phát triển tích cực. Sau khi cấu trúc của trang web đã thay đổi, trình quét của bạn có thể không điều hướng được sơ đồ trang web một cách chính xác hoặc không tìm thấy thông tin liên quan. Tin vui là nhiều thay đổi đối với các trang web là nhỏ và tăng dần, vì vậy bạn có thể cập nhật trình thu thập dữ liệu của mình chỉ với những điều chỉnh tối thiểu

Tuy nhiên, hãy nhớ rằng do Internet rất năng động nên các công cụ dọn dẹp mà bạn xây dựng có thể sẽ cần được bảo trì liên tục. Bạn có thể thiết lập tích hợp liên tục để chạy thử nghiệm quét định kỳ nhằm đảm bảo rằng tập lệnh chính của bạn không bị hỏng mà bạn không biết

Một giải pháp thay thế cho Web Scraping. API

Một số nhà cung cấp trang web cung cấp giao diện lập trình ứng dụng [API] cho phép bạn 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ể tránh phân tích cú pháp HTML. Thay vào đó, bạn có thể truy cập dữ liệu trực tiếp bằng các định dạng như JSON và XML. HTML chủ yếu là một cách để trình bày nội dung cho người dùng một cách trực quan

Khi bạn sử dụng API, quy trình này thường ổn định hơn so với việc thu thập dữ liệu thông qua quét web. Đó là bởi vì các nhà phát triển tạo ra các API để các chương trình sử dụng thay vì mắt người

Phần trình bày mặt trước của một trang web có thể thay đổi thường xuyên, nhưng sự thay đổi đó trong thiết kế của trang web không ảnh hưởng đến cấu trúc API của nó. Cấu trúc của API thường lâu dài hơn, có nghĩa là nó là nguồn dữ liệu đáng tin cậy hơn của trang web

Tuy nhiên, API cũng có thể thay đổi. Những thách thức về cả tính đa dạng và độ bền đều áp dụng cho các API giống như chúng áp dụng cho các trang web. Ngoài ra, việc tự kiểm tra cấu trúc của API sẽ khó hơn nhiều nếu tài liệu được cung cấp thiếu chất lượng

Cách tiếp cận và công cụ bạn cần để thu thập thông tin bằng API nằm ngoài phạm vi của hướng dẫn này. Để tìm hiểu thêm về nó, hãy xem Tích hợp API trong Python

Cạo trang web việc làm Python giả

Trong hướng dẫn này, bạn sẽ xây dựng một trình quét web tìm nạp danh sách công việc của nhà phát triển phần mềm Python từ trang Fake Python Jobs. Đó là một trang web mẫu với các tin tuyển dụng giả mạo mà bạn có thể tự do tìm kiếm để rèn luyện kỹ năng của mình. Trình quét web của bạn sẽ phân tích cú pháp HTML trên trang web để chọn ra thông tin liên quan và lọc nội dung đó cho các từ cụ thể

Ghi chú. Phiên bản trước của hướng dẫn này tập trung vào việc loại bỏ bảng công việc Monster, hiện đã thay đổi và không cung cấp nội dung HTML tĩnh nữa. Phiên bản cập nhật của hướng dẫn này tập trung vào một trang web tĩnh tự lưu trữ được đảm bảo giữ nguyên và cung cấp cho bạn một sân chơi đáng tin cậy để thực hành các kỹ năng bạn cần để quét web

Bạn có thể thu thập bất kỳ trang web nào trên Internet mà bạn có thể xem, nhưng độ khó của việc này phụ thuộc vào trang web. Hướng dẫn này cung cấp cho bạn phần giới thiệu về quét web để giúp bạn hiểu quy trình tổng thể. Sau đó, bạn có thể áp dụng quy trình tương tự cho mọi trang web mà bạn muốn cạo

Trong suốt hướng dẫn, bạn cũng sẽ gặp một số khối bài tập. Bạn có thể nhấp để mở rộng chúng và thử thách bản thân bằng cách hoàn thành các nhiệm vụ được mô tả ở đó

Loại bỏ các quảng cáo

Bước 1. Kiểm tra nguồn dữ liệu của bạn

Trước khi bạn viết bất kỳ mã Python nào, bạn cần tìm hiểu trang web mà bạn muốn cạo. Đó sẽ là bước đầu tiên của bạn cho bất kỳ dự án quét web nào mà bạn muốn giải quyết. Bạn sẽ cần hiểu cấu trúc trang web để trích xuất thông tin phù hợp với mình. Bắt đầu bằng cách mở trang web bạn muốn cạo bằng trình duyệt yêu thích của mình

Khám phá trang web

Nhấp qua trang web và tương tác với nó giống như bất kỳ người tìm việc điển hình nào. Ví dụ: bạn có thể cuộn qua trang chính của trang web

Bạn có thể thấy nhiều tin tuyển dụng ở định dạng thẻ và mỗi tin có hai nút. Nếu bạn nhấp vào Ứng tuyển, thì bạn sẽ thấy một trang mới chứa các mô tả chi tiết hơn về công việc đã chọn. Bạn cũng có thể nhận thấy rằng URL trong thanh địa chỉ của trình duyệt thay đổi khi bạn tương tác với trang web

Giải mã thông tin trong URL

Một lập trình viên có thể mã hóa rất nhiều thông tin trong một URL. Hành trình tìm kiếm trang web của bạn sẽ dễ dàng hơn nhiều nếu lần đầu tiên bạn làm quen với cách thức hoạt động của các URL và cấu tạo của chúng. Ví dụ: bạn có thể thấy mình đang ở trên trang chi tiết có URL sau

//realpython.github.io/fake-jobs/jobs/senior-python-developer-0.html

Bạn có thể phân cấu trúc URL trên thành hai phần chính

  1. URL cơ sở đại diện cho đường dẫn đến chức năng tìm kiếm của trang web. Trong ví dụ trên, URL cơ sở là
    $ python -m pip install requests
    
    4
  2. Vị trí trang web cụ thể kết thúc bằng
    $ python -m pip install requests
    
    5 là đường dẫn đến tài nguyên duy nhất của mô tả công việc

Mọi công việc được đăng trên trang web này sẽ sử dụng cùng một URL cơ sở. Tuy nhiên, vị trí của các tài nguyên duy nhất sẽ khác nhau tùy thuộc vào tin tuyển dụng cụ thể mà bạn đang xem

URL có thể chứa nhiều thông tin hơn là chỉ vị trí của tệp. Một số trang web sử dụng tham số truy vấn để mã hóa các giá trị mà bạn gửi khi thực hiện tìm kiếm. Bạn có thể coi chúng như các chuỗi truy vấn mà bạn gửi tới cơ sở dữ liệu để truy xuất các bản ghi cụ thể

Bạn sẽ tìm thấy các tham số truy vấn ở cuối URL. Ví dụ: nếu bạn truy cập Thật và tìm kiếm "nhà phát triển phần mềm" trong "Úc" thông qua thanh tìm kiếm của họ, bạn sẽ thấy rằng URL thay đổi để bao gồm các giá trị này dưới dạng tham số truy vấn

//au.indeed.com/jobs?q=software+developer&l=Australia

Các tham số truy vấn trong URL này là

$ python -m pip install requests
6. Tham số truy vấn bao gồm ba phần

  1. Bắt đầu. Phần đầu của tham số truy vấn được biểu thị bằng dấu chấm hỏi [
    $ python -m pip install requests
    
    7]
  2. Thông tin. Các mẩu thông tin cấu thành một tham số truy vấn được mã hóa theo cặp khóa-giá trị, trong đó các khóa và giá trị liên quan được nối với nhau bằng dấu bằng [
    $ python -m pip install requests
    
    8]
  3. dấu phân cách. Mỗi URL có thể có nhiều tham số truy vấn, được phân tách bằng ký hiệu dấu và [
    $ python -m pip install requests
    
    9]

Được trang bị thông tin này, bạn có thể tách các tham số truy vấn của URL thành hai cặp khóa-giá trị

  1. $ python -m pip install requests
    
    00 chọn loại công việc
  2. $ python -m pip install requests
    
    01 chọn vị trí của công việc

Cố gắng thay đổi các tham số tìm kiếm và quan sát xem điều đó ảnh hưởng đến URL của bạn như thế nào. Hãy tiếp tục và nhập các giá trị mới vào thanh tìm kiếm ở trên cùng

Thay đổi các giá trị này để quan sát các thay đổi trong URL

Tiếp theo, hãy thử thay đổi các giá trị trực tiếp trong URL của bạn. Xem điều gì sẽ xảy ra khi bạn dán URL sau vào thanh địa chỉ của trình duyệt

$ python -m pip install requests
2

Nếu bạn thay đổi và gửi các giá trị trong hộp tìm kiếm của trang web thì giá trị đó sẽ được phản ánh trực tiếp trong các tham số truy vấn của URL và ngược lại. Nếu bạn thay đổi một trong hai, thì bạn sẽ thấy các kết quả khác nhau trên trang web

Như bạn có thể thấy, việc khám phá các URL của trang web có thể cung cấp cho bạn thông tin chi tiết về cách truy xuất dữ liệu từ máy chủ của trang web

Quay trở lại Fake Python Jobs và tiếp tục khám phá nó. Trang web này hoàn toàn là một trang web tĩnh không hoạt động trên cơ sở dữ liệu, đó là lý do tại sao bạn sẽ không phải làm việc với các tham số truy vấn trong hướng dẫn tìm kiếm này

Loại bỏ các quảng cáo

Kiểm tra trang web bằng Công cụ dành cho nhà phát triển

Tiếp theo, bạn sẽ muốn tìm hiểu thêm về cách dữ liệu được cấu trúc để hiển thị. Bạn sẽ cần hiểu cấu trúc trang để chọn nội dung bạn muốn từ phản hồi HTML mà bạn sẽ thu thập ở một trong các bước sắp tới

Công cụ dành cho nhà phát triển có thể giúp bạn hiểu cấu trúc của trang web. Tất cả các trình duyệt hiện đại đều được cài đặt công cụ dành cho nhà phát triển. Trong phần này, bạn sẽ thấy cách làm việc với các công cụ dành cho nhà phát triển trong Chrome. Quá trình này sẽ rất giống với các trình duyệt hiện đại khác

Trong Chrome trên macOS, bạn có thể mở các công cụ dành cho nhà phát triển thông qua menu bằng cách chọn Xem → Nhà phát triển → Công cụ dành cho nhà phát triển. Trên Windows và Linux, bạn có thể truy cập chúng bằng cách nhấp vào nút menu trên cùng bên phải [

$ python -m pip install requests
02] và chọn Công cụ khác → Công cụ dành cho nhà phát triển. Bạn cũng có thể truy cập các công cụ dành cho nhà phát triển của mình bằng cách nhấp chuột phải vào trang và chọn tùy chọn Kiểm tra hoặc sử dụng phím tắt

  • máy Mac. Cmd + Alt + I
  • Windows/Linux. Ctrl + Shift + I

Các công cụ dành cho nhà phát triển cho phép bạn khám phá mô hình đối tượng tài liệu [DOM] của trang web một cách tương tác để hiểu rõ hơn về nguồn của bạn. Để tìm hiểu sâu về DOM của trang của bạn, hãy chọn tab Thành phần trong công cụ dành cho nhà phát triển. Bạn sẽ thấy một cấu trúc với các phần tử HTML có thể nhấp được. Bạn có thể mở rộng, thu gọn và thậm chí chỉnh sửa các thành phần ngay trong trình duyệt của mình

HTML ở bên phải thể hiện cấu trúc của trang mà bạn có thể thấy ở bên trái

Bạn có thể coi văn bản hiển thị trong trình duyệt của mình là cấu trúc HTML của trang đó. Nếu quan tâm, bạn có thể đọc thêm về sự khác biệt giữa DOM và HTML trên CSS-TRICKS

Khi bạn nhấp chuột phải vào các phần tử trên trang, bạn có thể chọn Kiểm tra để phóng to vị trí của chúng trong DOM. Bạn cũng có thể di chuột qua văn bản HTML ở bên phải của mình và xem các thành phần tương ứng sáng lên trên trang

Nhấp để mở rộng khối bài tập cho một nhiệm vụ cụ thể để thực hành bằng các công cụ dành cho nhà phát triển của bạn

Tập thể dục. Khám phá HTMLHiển thị/Ẩn

Tìm một tin tuyển dụng duy nhất. Nó bao gồm phần tử HTML nào và nó chứa những phần tử HTML nào khác?

Chơi xung quanh và khám phá. Bạn càng biết nhiều về trang bạn đang làm việc, thì càng dễ dàng loại bỏ nó. Tuy nhiên, đừng quá choáng ngợp với tất cả các văn bản HTML đó. Bạn sẽ sử dụng sức mạnh của lập trình để bước qua mê cung này và chọn ra những thông tin phù hợp với mình

Bước 2. Cạo nội dung HTML từ một trang

Bây giờ bạn đã có ý tưởng về những gì bạn đang làm việc, đã đến lúc bắt đầu sử dụng Python. Trước tiên, bạn sẽ muốn đưa mã HTML của trang web vào tập lệnh Python của mình để bạn có thể tương tác với nó. Đối với tác vụ này, bạn sẽ sử dụng thư viện

$ python -m pip install requests
2 của Python

Tạo một môi trường ảo cho dự án của bạn trước khi bạn cài đặt bất kỳ gói bên ngoài nào. Kích hoạt môi trường ảo mới của bạn, sau đó nhập lệnh sau vào thiết bị đầu cuối của bạn để cài đặt thư viện

$ python -m pip install requests
2 bên ngoài

$ python -m pip install requests

Sau đó mở một tệp mới trong trình soạn thảo văn bản yêu thích của bạn. Tất cả những gì bạn cần để truy xuất HTML là một vài dòng mã

$ python -m pip install requests
0

Mã này đưa ra yêu cầu HTTP

$ python -m pip install requests
05 tới URL đã cho. Nó lấy dữ liệu HTML mà máy chủ gửi lại và lưu trữ dữ liệu đó trong một đối tượng Python

Nếu bạn in thuộc tính

$ python -m pip install requests
06 của
$ python -m pip install requests
07, thì bạn sẽ nhận thấy rằng nó trông giống như HTML mà bạn đã kiểm tra trước đó bằng các công cụ dành cho nhà phát triển của trình duyệt. Bạn đã tìm nạp thành công nội dung trang web tĩnh từ Internet. Bây giờ bạn có quyền truy cập vào HTML của trang web từ bên trong tập lệnh Python của bạn

Loại bỏ các quảng cáo

Trang web tĩnh

Trang web mà bạn đang tìm kiếm trong hướng dẫn này cung cấp nội dung HTML tĩnh. Trong trường hợp này, máy chủ lưu trữ trang web sẽ gửi lại các tài liệu HTML đã chứa tất cả dữ liệu mà bạn sẽ thấy với tư cách là người dùng

Khi bạn kiểm tra trang bằng các công cụ dành cho nhà phát triển trước đó, bạn đã phát hiện ra rằng một tin tuyển dụng bao gồm đoạn HTML dài và trông lộn xộn sau đây

//realpython.github.io/fake-jobs/jobs/senior-python-developer-0.html
1

Có thể là một thách thức khi bạn phải xoay sở trong một khối mã HTML dài. Để dễ đọc hơn, bạn có thể sử dụng trình định dạng HTML để tự động dọn dẹp. Khả năng đọc tốt giúp bạn hiểu rõ hơn về cấu trúc của bất kỳ khối mã nào. Mặc dù nó có thể hoặc không thể giúp cải thiện định dạng HTML, nhưng nó luôn đáng để thử

Ghi chú. Hãy nhớ rằng mỗi trang web sẽ trông khác nhau. Đó là lý do tại sao cần phải kiểm tra và hiểu cấu trúc của trang web mà bạn hiện đang làm việc trước khi tiếp tục

HTML bạn sẽ gặp đôi khi sẽ gây nhầm lẫn. May mắn thay, HTML của bảng công việc này có tên lớp mô tả về các thành phần mà bạn quan tâm

  • $ python -m pip install requests
    
    08 chứa tiêu đề của tin tuyển dụng
  • $ python -m pip install requests
    
    09 chứa tên của công ty cung cấp vị trí
  • //realpython.github.io/fake-jobs/jobs/senior-python-developer-0.html
    
    10 chứa địa điểm bạn sẽ làm việc

Trong trường hợp bạn bị lạc trong một đống HTML lớn, hãy nhớ rằng bạn luôn có thể quay lại trình duyệt của mình và sử dụng các công cụ dành cho nhà phát triển để khám phá thêm cấu trúc HTML một cách tương tác

Đến giờ, bạn đã khai thác thành công sức mạnh và thiết kế thân thiện với người dùng của thư viện

$ python -m pip install requests
2 của Python. Chỉ với một vài dòng mã, bạn đã xoay sở để loại bỏ nội dung HTML tĩnh khỏi Web và cung cấp nội dung đó để xử lý thêm

Tuy nhiên, có nhiều tình huống khó khăn hơn mà bạn có thể gặp phải khi tìm kiếm các trang web. Trước khi tìm hiểu cách chọn thông tin liên quan từ HTML mà bạn vừa thu thập, bạn sẽ xem nhanh hai trong số các tình huống khó khăn hơn này

Trang web ẩn

Một số trang chứa thông tin ẩn đằng sau thông tin đăng nhập. Điều đó có nghĩa là bạn sẽ cần một tài khoản để có thể lấy bất cứ thứ gì từ trang. Quá trình tạo một yêu cầu HTTP từ tập lệnh Python của bạn khác với cách bạn truy cập một trang từ trình duyệt của mình. Chỉ vì bạn có thể đăng nhập vào trang thông qua trình duyệt của mình không có nghĩa là bạn sẽ có thể cạo nó bằng tập lệnh Python của mình

Tuy nhiên, thư viện

$ python -m pip install requests
2 đi kèm với khả năng tích hợp sẵn để xử lý xác thực. Với những kỹ thuật này, bạn có thể đăng nhập vào các trang web khi thực hiện yêu cầu HTTP từ tập lệnh Python của mình và sau đó loại bỏ thông tin ẩn đằng sau thông tin đăng nhập. Bạn sẽ không cần phải đăng nhập để truy cập thông tin bảng công việc, đó là lý do tại sao hướng dẫn này sẽ không bao gồm xác thực

Trang web động

Trong hướng dẫn này, bạn sẽ học cách cạo một trang web tĩnh. Các trang web tĩnh rất dễ làm việc vì máy chủ gửi cho bạn một trang HTML đã chứa tất cả thông tin trang trong phản hồi. Bạn có thể phân tích cú pháp phản hồi HTML đó và ngay lập tức bắt đầu chọn dữ liệu liên quan

Mặt khác, với một trang web động, máy chủ có thể không gửi lại bất kỳ HTML nào. Thay vào đó, bạn có thể nhận được mã JavaScript dưới dạng phản hồi. Mã này sẽ trông hoàn toàn khác với những gì bạn thấy khi kiểm tra trang bằng các công cụ dành cho nhà phát triển của trình duyệt

Ghi chú. Trong hướng dẫn này, thuật ngữ trang web động đề cập đến một trang web không trả về cùng một HTML mà bạn thấy khi xem trang trong trình duyệt của mình

Nhiều ứng dụng web hiện đại được thiết kế để cung cấp chức năng của chúng khi cộng tác với trình duyệt của khách hàng. Thay vì gửi các trang HTML, các ứng dụng này gửi mã JavaScript hướng dẫn trình duyệt của bạn tạo HTML mong muốn. Các ứng dụng web cung cấp nội dung động theo cách này để giảm tải công việc từ máy chủ sang máy của khách hàng cũng như để tránh tải lại trang và cải thiện trải nghiệm người dùng tổng thể

Điều xảy ra trong trình duyệt không giống với điều xảy ra trong tập lệnh của bạn. Trình duyệt của bạn sẽ siêng năng thực thi mã JavaScript mà nó nhận được từ máy chủ và tạo DOM và HTML cục bộ cho bạn. Tuy nhiên, nếu bạn yêu cầu một trang web động trong tập lệnh Python của mình thì bạn sẽ không nhận được nội dung trang HTML

Khi bạn sử dụng

$ python -m pip install requests
2, bạn chỉ nhận được những gì máy chủ gửi lại. Trong trường hợp trang web động, bạn sẽ kết thúc với một số mã JavaScript thay vì HTML. Cách duy nhất để đi từ mã JavaScript bạn nhận được đến nội dung mà bạn quan tâm là thực thi mã, giống như trình duyệt của bạn. Thư viện
$ python -m pip install requests
2 không thể làm điều đó cho bạn, nhưng có những giải pháp khác có thể

Ví dụ:

//realpython.github.io/fake-jobs/jobs/senior-python-developer-0.html
15 là một dự án được tạo bởi tác giả của thư viện
$ python -m pip install requests
2 cho phép bạn hiển thị JavaScript bằng cú pháp tương tự như cú pháp trong
$ python -m pip install requests
2. Nó cũng bao gồm các khả năng phân tích dữ liệu bằng cách sử dụng Beautiful Soup dưới mui xe

Ghi chú. Một lựa chọn phổ biến khác để cạo nội dung động là Selenium. Bạn có thể coi Selenium như một trình duyệt rút gọn thực thi mã JavaScript cho bạn trước khi chuyển phản hồi HTML được hiển thị cho tập lệnh của bạn

Bạn sẽ không đi sâu hơn vào nội dung được tạo động trong hướng dẫn này. Hiện tại, bạn chỉ cần nhớ xem xét một trong các tùy chọn được đề cập ở trên nếu bạn cần tìm kiếm một trang web động

Loại bỏ các quảng cáo

Bước 3. Phân tích cú pháp mã HTML với Beautiful Soup

Bạn đã lấy thành công một số HTML từ Internet, nhưng khi bạn nhìn vào nó, nó có vẻ như là một mớ hỗn độn. Có rất nhiều phần tử HTML ở đây và ở đó, hàng nghìn thuộc tính nằm rải rác xung quanh—và chẳng phải cũng có một số JavaScript được trộn lẫn vào sao?

Beautiful Soup là một thư viện Python để phân tích cú pháp dữ liệu có cấu trúc. Nó cho phép bạn tương tác với HTML theo cách tương tự như cách bạn tương tác với một trang web bằng các công cụ dành cho nhà phát triển. Thư viện hiển thị một vài chức năng trực quan mà bạn có thể sử dụng để khám phá HTML mà bạn đã nhận được. Để bắt đầu, hãy sử dụng thiết bị đầu cuối của bạn để cài đặt Beautiful Soup

$ python -m pip install requests
2

Sau đó, nhập thư viện vào tập lệnh Python của bạn và tạo đối tượng Beautiful Soup

$ python -m pip install requests
3

Khi bạn thêm hai dòng mã được đánh dấu, bạn tạo một đối tượng Beautiful Soup lấy

//realpython.github.io/fake-jobs/jobs/senior-python-developer-0.html
18, là nội dung HTML mà bạn đã thu thập trước đó, làm đầu vào của nó

Ghi chú. Bạn sẽ muốn vượt qua

//realpython.github.io/fake-jobs/jobs/senior-python-developer-0.html
18 thay vì
$ python -m pip install requests
20 để tránh các sự cố với mã hóa ký tự. Thuộc tính
$ python -m pip install requests
21 chứa các byte thô, có thể được giải mã tốt hơn so với biểu diễn văn bản mà bạn đã in trước đó bằng thuộc tính
$ python -m pip install requests
06

Đối số thứ hai,

$ python -m pip install requests
23, đảm bảo rằng bạn sử dụng trình phân tích cú pháp thích hợp cho nội dung HTML

Tìm phần tử theo ID

Trong một trang web HTML, mọi phần tử đều có thể được gán thuộc tính

$ python -m pip install requests
24. Như tên đã gợi ý, thuộc tính
$ python -m pip install requests
24 đó làm cho phần tử có thể được nhận dạng duy nhất trên trang. Bạn có thể bắt đầu phân tích trang của mình bằng cách chọn một thành phần cụ thể theo ID của nó

Chuyển về công cụ dành cho nhà phát triển và xác định đối tượng HTML chứa tất cả các tin tuyển dụng. Khám phá bằng cách di chuột qua các phần của trang và nhấp chuột phải để Kiểm tra

Ghi chú. Nó giúp định kỳ quay lại trình duyệt của bạn và khám phá trang một cách tương tác bằng các công cụ dành cho nhà phát triển. Điều này giúp bạn tìm hiểu cách tìm các yếu tố chính xác mà bạn đang tìm kiếm

Phần tử bạn đang tìm kiếm là một

$ python -m pip install requests
26 với thuộc tính
$ python -m pip install requests
24 có giá trị
$ python -m pip install requests
28. Nó cũng có một số thuộc tính khác, nhưng bên dưới là ý chính của những gì bạn đang tìm kiếm

$ python -m pip install requests
5

Beautiful Soup cho phép bạn tìm phần tử HTML cụ thể đó bằng ID của nó

$ python -m pip install requests
6

Để xem dễ dàng hơn, bạn có thể tô điểm bất kỳ đối tượng Beautiful Soup nào khi in ra. Nếu bạn gọi

$ python -m pip install requests
29 trên biến
$ python -m pip install requests
30 mà bạn vừa chỉ định ở trên, thì bạn sẽ thấy tất cả HTML có trong biến
$ python -m pip install requests
26

//au.indeed.com/jobs?q=software+developer&l=Australia
0

Khi bạn sử dụng ID của phần tử, bạn có thể chọn ra một phần tử trong số phần còn lại của HTML. Giờ đây, bạn chỉ có thể làm việc với phần cụ thể này trong HTML của trang. Có vẻ như súp đã loãng hơn một chút. Tuy nhiên, nó vẫn còn khá dày đặc

Loại bỏ các quảng cáo

Tìm phần tử theo tên lớp HTML

Bạn đã thấy rằng mọi tin tuyển dụng được bao bọc trong một phần tử

$ python -m pip install requests
26 với lớp
$ python -m pip install requests
33. Bây giờ bạn có thể làm việc với đối tượng mới của mình có tên là
$ python -m pip install requests
30 và chỉ chọn các tin tuyển dụng trong đó. Rốt cuộc, đây là những phần của HTML mà bạn quan tâm. Bạn có thể làm điều này trong một dòng mã

//au.indeed.com/jobs?q=software+developer&l=Australia
1

Ở đây, bạn gọi

$ python -m pip install requests
35 trên một đối tượng Beautiful Soup, trả về một iterable chứa tất cả HTML cho tất cả danh sách công việc được hiển thị trên trang đó

Hãy nhìn vào tất cả chúng

//au.indeed.com/jobs?q=software+developer&l=Australia
2

Điều đó đã khá gọn gàng, nhưng vẫn còn rất nhiều HTML. Bạn đã thấy trước đó rằng trang của bạn có tên lớp mô tả trên một số phần tử. Bạn có thể chọn ra những phần tử con đó từ mỗi tin tuyển dụng với

$ python -m pip install requests
36

//au.indeed.com/jobs?q=software+developer&l=Australia
3

Mỗi

$ python -m pip install requests
37 là một đối tượng
$ python -m pip install requests
38 khác. Do đó, bạn có thể sử dụng các phương thức tương tự trên nó như bạn đã làm trên phần tử cha của nó,
$ python -m pip install requests
30

Với đoạn mã này, bạn ngày càng tiến gần hơn đến dữ liệu mà bạn thực sự quan tâm. Tuy nhiên, có rất nhiều điều đang xảy ra với tất cả các thẻ và thuộc tính HTML trôi nổi xung quanh

//au.indeed.com/jobs?q=software+developer&l=Australia
4

Tiếp theo, bạn sẽ tìm hiểu cách thu hẹp đầu ra này để chỉ truy cập nội dung văn bản mà bạn quan tâm

Trích xuất văn bản từ các phần tử HTML

Bạn chỉ muốn xem tiêu đề, công ty và vị trí của từng tin tuyển dụng. Và kìa. Beautiful Soup đã giúp bạn. Bạn có thể thêm

$ python -m pip install requests
06 vào đối tượng Beautiful Soup để chỉ trả về nội dung văn bản của các thành phần HTML mà đối tượng chứa

//au.indeed.com/jobs?q=software+developer&l=Australia
5

Chạy đoạn mã trên và bạn sẽ thấy văn bản của từng thành phần được hiển thị. Tuy nhiên, có thể bạn cũng sẽ nhận được thêm một số khoảng trắng. Vì bạn hiện đang làm việc với các chuỗi Python, nên bạn có thể

$ python -m pip install requests
51 khoảng trắng thừa. Bạn cũng có thể áp dụng bất kỳ phương thức chuỗi Python quen thuộc nào khác để làm sạch hơn nữa văn bản của mình

//au.indeed.com/jobs?q=software+developer&l=Australia
6

Kết quả cuối cùng trông tốt hơn nhiều

//au.indeed.com/jobs?q=software+developer&l=Australia
7

Đó là một danh sách các công việc có thể đọc được bao gồm tên công ty và vị trí của từng công việc. Tuy nhiên, bạn đang tìm kiếm một vị trí là nhà phát triển phần mềm và những kết quả này cũng bao gồm các tin tuyển dụng trong nhiều lĩnh vực khác

Loại bỏ các quảng cáo

Tìm phần tử theo tên lớp và nội dung văn bản

Không phải tất cả các danh sách công việc đều là công việc của nhà phát triển. Thay vì in ra tất cả các công việc được liệt kê trên trang web, trước tiên bạn sẽ lọc chúng bằng từ khóa

Bạn biết rằng các chức danh công việc trong trang được giữ trong các phần tử

$ python -m pip install requests
52. Để chỉ lọc các công việc cụ thể, bạn có thể sử dụng đối số
$ python -m pip install requests
53

//au.indeed.com/jobs?q=software+developer&l=Australia
8

Mã này tìm tất cả các phần tử ________ 452 trong đó chuỗi chứa khớp chính xác với ________ 455. Lưu ý rằng bạn đang gọi trực tiếp phương thức trên biến

$ python -m pip install requests
30 đầu tiên của mình. Nếu bạn tiếp tục và
$ python -m pip install requests
57 đầu ra của đoạn mã trên vào bảng điều khiển của mình, thì bạn có thể thất vọng vì nó sẽ trống

>>>

//au.indeed.com/jobs?q=software+developer&l=Australia
9

Có một công việc Python trong kết quả tìm kiếm, vậy tại sao nó không hiển thị?

Khi bạn sử dụng

$ python -m pip install requests
58 như bạn đã làm ở trên, chương trình của bạn sẽ tìm chính xác chuỗi đó. Bất kỳ sự khác biệt nào về chính tả, cách viết hoa hoặc khoảng trắng sẽ ngăn không cho phần tử khớp. Trong phần tiếp theo, bạn sẽ tìm cách làm cho chuỗi tìm kiếm của mình tổng quát hơn

Truyền một chức năng cho một phương pháp súp đẹp

Ngoài các chuỗi, đôi khi bạn có thể chuyển các hàm làm đối số cho các phương thức Beautiful Soup. Thay vào đó, bạn có thể thay đổi dòng mã trước đó để sử dụng một chức năng

$ python -m pip install requests
20

Bây giờ bạn đang chuyển một hàm ẩn danh cho đối số

$ python -m pip install requests
58. Hàm lambda xem xét văn bản của từng phần tử
$ python -m pip install requests
52, chuyển đổi nó thành chữ thường và kiểm tra xem chuỗi con
$ python -m pip install requests
61 có được tìm thấy ở bất kỳ đâu không. Bạn có thể kiểm tra xem bạn có quản lý để xác định tất cả các công việc Python bằng phương pháp này không

>>>

$ python -m pip install requests
21

Chương trình của bạn đã tìm thấy

$ python -m pip install requests
62 bài đăng công việc phù hợp bao gồm từ
$ python -m pip install requests
61 trong tiêu đề công việc của họ

Tìm các phần tử tùy thuộc vào nội dung văn bản của chúng là một cách mạnh mẽ để lọc phản hồi HTML của bạn để biết thông tin cụ thể. Beautiful Soup cho phép bạn sử dụng các chuỗi hoặc hàm chính xác làm đối số để lọc văn bản trong các đối tượng Beautiful Soup

Tuy nhiên, khi bạn cố gắng chạy trình quét của mình để in ra thông tin của các công việc Python đã lọc, bạn sẽ gặp lỗi

$ python -m pip install requests
22

Thông báo này là một lỗi phổ biến mà bạn sẽ gặp phải rất nhiều khi tìm kiếm thông tin từ Internet. Kiểm tra HTML của một phần tử trong danh sách

$ python -m pip install requests
64 của bạn. Nó trông như thế nào?

Xác định điều kiện lỗi

Khi bạn nhìn vào một phần tử duy nhất trong

$ python -m pip install requests
64, bạn sẽ thấy rằng nó chỉ bao gồm phần tử
$ python -m pip install requests
52 chứa chức danh công việc

$ python -m pip install requests
23

Khi bạn xem lại mã mà bạn đã sử dụng để chọn các mục, bạn sẽ thấy rằng đó là những gì bạn đã nhắm mục tiêu. Bạn chỉ lọc các thành phần tiêu đề

$ python -m pip install requests
52 của tin tuyển dụng có chứa từ
$ python -m pip install requests
61. Như bạn có thể thấy, những yếu tố này không bao gồm phần còn lại của thông tin về công việc

Thông báo lỗi bạn nhận được trước đó có liên quan đến điều này

$ python -m pip install requests
22

Bạn đã cố gắng tìm chức danh công việc, tên công ty và vị trí của công việc trong mỗi phần tử của

$ python -m pip install requests
64, nhưng mỗi phần tử chỉ chứa văn bản chức danh công việc

Thư viện phân tích cú pháp siêng năng của bạn vẫn tìm kiếm những cái khác và trả về

//au.indeed.com/jobs?q=software+developer&l=Australia
00 vì nó không thể tìm thấy chúng. Sau đó,
$ python -m pip install requests
57 không thành công với thông báo lỗi được hiển thị khi bạn cố gắng trích xuất thuộc tính
$ python -m pip install requests
06 từ một trong những đối tượng
//au.indeed.com/jobs?q=software+developer&l=Australia
00 này

Văn bản bạn đang tìm kiếm được lồng trong các phần tử anh chị em của các phần tử

$ python -m pip install requests
52 mà bộ lọc của bạn đã trả về. Beautiful Soup có thể giúp bạn chọn các phần tử anh chị em, con và cha của từng đối tượng Beautiful Soup

Loại bỏ các quảng cáo

Truy cập các phần tử gốc

Một cách để có quyền truy cập vào tất cả thông tin bạn cần là đẩy mạnh thứ bậc của DOM bắt đầu từ các phần tử

$ python -m pip install requests
52 mà bạn đã xác định. Hãy xem lại HTML của một tin tuyển dụng. Tìm phần tử
$ python -m pip install requests
52 chứa chức danh công việc cũng như phần tử cha gần nhất chứa tất cả thông tin mà bạn quan tâm

$ python -m pip install requests
25

Phần tử

$ python -m pip install requests
26 với lớp
$ python -m pip install requests
33 chứa tất cả thông tin bạn muốn. Đó là phần tử gốc cấp ba của phần tử tiêu đề
$ python -m pip install requests
52 mà bạn đã tìm thấy bằng cách sử dụng bộ lọc của mình

Với thông tin này, giờ đây bạn có thể sử dụng các phần tử trong

$ python -m pip install requests
64 và tìm nạp các phần tử ông bà cố của chúng để có quyền truy cập vào tất cả thông tin bạn muốn

$ python -m pip install requests
26

Bạn đã thêm khả năng hiểu danh sách hoạt động trên từng thành phần tiêu đề của

$ python -m pip install requests
52 trong
$ python -m pip install requests
64 mà bạn có được bằng cách lọc bằng biểu thức lambda. Bạn đang chọn phần tử cha của phần tử cha của phần tử cha của mỗi phần tử tiêu đề
$ python -m pip install requests
52. Đó là ba thế hệ trở lên

Khi bạn đang xem HTML của một tin tuyển dụng, bạn đã xác định rằng phần tử gốc cụ thể này có tên lớp

$ python -m pip install requests
33 chứa tất cả thông tin bạn cần

Giờ đây, bạn có thể điều chỉnh mã trong vòng lặp

//au.indeed.com/jobs?q=software+developer&l=Australia
15 của mình để lặp lại các phần tử gốc thay thế

$ python -m pip install requests
27

Khi bạn chạy tập lệnh của mình vào lần khác, bạn sẽ thấy rằng mã của mình một lần nữa có quyền truy cập vào tất cả thông tin liên quan. Đó là bởi vì bạn hiện đang lặp qua các phần tử

//au.indeed.com/jobs?q=software+developer&l=Australia
16 thay vì chỉ các phần tử tiêu đề
$ python -m pip install requests
52

Sử dụng thuộc tính

//au.indeed.com/jobs?q=software+developer&l=Australia
18 mà mỗi đối tượng Beautiful Soup đi kèm sẽ mang đến cho bạn một cách trực quan để duyệt qua cấu trúc DOM của bạn và giải quyết các phần tử bạn cần. Bạn cũng có thể truy cập các phần tử con và phần tử anh chị em theo cách tương tự. Đọc về điều hướng cây để biết thêm thông tin

Trích xuất các thuộc tính từ các phần tử HTML

Tại thời điểm này, tập lệnh Python của bạn đã quét trang web và lọc HTML của nó cho các tin tuyển dụng phù hợp. Tốt lắm. Tuy nhiên, điều vẫn còn thiếu là liên kết để nộp đơn xin việc

Khi bạn đang kiểm tra trang, bạn đã tìm thấy hai liên kết ở cuối mỗi thẻ. Nếu bạn xử lý các phần tử liên kết giống như cách bạn xử lý các phần tử khác, thì bạn sẽ không nhận được các URL mà bạn quan tâm

$ python -m pip install requests
28

Nếu bạn chạy đoạn mã này thì bạn sẽ nhận được văn bản liên kết

//au.indeed.com/jobs?q=software+developer&l=Australia
19 và
//au.indeed.com/jobs?q=software+developer&l=Australia
20 thay vì các URL được liên kết

Đó là bởi vì thuộc tính

$ python -m pip install requests
06 chỉ để lại nội dung hiển thị của phần tử HTML. Nó loại bỏ tất cả các thẻ HTML, bao gồm các thuộc tính HTML chứa URL và chỉ để lại cho bạn văn bản liên kết. Thay vào đó, để lấy URL, bạn cần trích xuất giá trị của một trong các thuộc tính HTML thay vì loại bỏ nó

URL của phần tử liên kết được liên kết với thuộc tính

//au.indeed.com/jobs?q=software+developer&l=Australia
22. URL cụ thể mà bạn đang tìm kiếm là giá trị của thuộc tính
//au.indeed.com/jobs?q=software+developer&l=Australia
22 của thẻ
//au.indeed.com/jobs?q=software+developer&l=Australia
24 thứ hai ở cuối HTML của một tin tuyển dụng

$ python -m pip install requests
29

Bắt đầu bằng cách tìm nạp tất cả các phần tử

//au.indeed.com/jobs?q=software+developer&l=Australia
24 trong thẻ công việc. Sau đó, trích xuất giá trị của các thuộc tính
//au.indeed.com/jobs?q=software+developer&l=Australia
22 của chúng bằng ký hiệu dấu ngoặc vuông

$ python -m pip install requests
0

Trong đoạn mã này, trước tiên bạn đã tìm nạp tất cả các liên kết từ mỗi tin tuyển dụng đã lọc. Sau đó, bạn đã trích xuất thuộc tính

//au.indeed.com/jobs?q=software+developer&l=Australia
22 chứa URL, sử dụng
//au.indeed.com/jobs?q=software+developer&l=Australia
28 và in nó ra bảng điều khiển của bạn

Trong khối bài tập bên dưới, bạn có thể tìm thấy hướng dẫn cho thử thách tinh chỉnh kết quả liên kết mà bạn đã nhận được

Tập thể dục. Tinh chỉnh kết quả của bạnHiển thị/Ẩn

Mỗi thẻ công việc có hai liên kết được liên kết với nó. Bạn đang tìm kiếm chỉ liên kết thứ hai. Làm cách nào bạn có thể chỉnh sửa đoạn mã được hiển thị ở trên để bạn luôn chỉ thu thập URL của liên kết thứ hai?

Nhấp vào khối giải pháp để đọc một giải pháp khả thi cho bài tập này

Giải pháp. Tinh chỉnh kết quả của bạnHiển thị/Ẩn

Để chỉ tìm nạp URL của liên kết thứ hai cho mỗi thẻ công việc, bạn có thể sử dụng đoạn mã sau

$ python -m pip install requests
1

Bạn đang chọn phần tử liên kết thứ hai từ kết quả của

$ python -m pip install requests
35 thông qua chỉ mục của nó [
//au.indeed.com/jobs?q=software+developer&l=Australia
30]. Sau đó, bạn đang trích xuất trực tiếp URL bằng cách sử dụng ký hiệu dấu ngoặc vuông và giải quyết thuộc tính
//au.indeed.com/jobs?q=software+developer&l=Australia
22 [
//au.indeed.com/jobs?q=software+developer&l=Australia
28]

Bạn cũng có thể sử dụng ký hiệu dấu ngoặc vuông tương tự để trích xuất các thuộc tính HTML khác

Loại bỏ các quảng cáo

Tiếp tục tập luyện

Nếu bạn đã viết mã cùng với hướng dẫn này, thì bạn có thể chạy tập lệnh của mình và bạn sẽ thấy thông tin công việc giả mạo bật lên trong thiết bị đầu cuối của mình. Bước tiếp theo của bạn là giải quyết một bảng công việc ngoài đời thực. Để tiếp tục thực hành các kỹ năng mới của bạn, hãy truy cập lại quy trình quét web bằng cách sử dụng bất kỳ hoặc tất cả các trang web sau

  • PythonJobs
  • Từ xa [chấm] co
  • Thật

Các trang web được liên kết trả lại kết quả tìm kiếm của họ dưới dạng phản hồi HTML tĩnh, tương tự như bảng công việc Fake Python. Do đó, bạn có thể cạo chúng chỉ bằng cách sử dụng

$ python -m pip install requests
2 và Beautiful Soup

Bắt đầu xem lại hướng dẫn này từ đầu bằng cách sử dụng một trong những trang web khác này. Bạn sẽ thấy rằng cấu trúc của mỗi trang web là khác nhau và bạn sẽ cần xây dựng lại mã theo một cách hơi khác để tìm nạp dữ liệu bạn muốn. Giải quyết thử thách này là một cách tuyệt vời để thực hành các khái niệm mà bạn vừa học. Mặc dù nó có thể khiến bạn đổ mồ hôi thường xuyên, nhưng kỹ năng viết mã của bạn sẽ mạnh mẽ hơn nhờ nó

Trong lần thử thứ hai, bạn cũng có thể khám phá các tính năng bổ sung của Beautiful Soup. Sử dụng tài liệu làm sách hướng dẫn và nguồn cảm hứng của bạn. Thực hành thêm sẽ giúp bạn trở nên thành thạo hơn trong việc quét web bằng Python,

$ python -m pip install requests
2 và Beautiful Soup

Để kết thúc hành trình khám phá trang web của mình, bạn có thể thay đổi lần cuối mã của mình và tạo ứng dụng giao diện dòng lệnh [CLI] để loại bỏ một trong các bảng công việc và lọc kết quả theo từ khóa mà bạn có thể nhập vào mỗi lần thực hiện. Công cụ CLI của bạn có thể cho phép bạn tìm kiếm các loại công việc hoặc công việc cụ thể ở các địa điểm cụ thể

Nếu bạn muốn tìm hiểu cách điều chỉnh tập lệnh của mình dưới dạng giao diện dòng lệnh, thì hãy xem Cách xây dựng giao diện dòng lệnh trong Python với argparse

Sự kết luận

Thư viện

$ python -m pip install requests
2 cung cấp cho bạn một cách thân thiện với người dùng để tìm nạp HTML tĩnh từ Internet bằng Python. Sau đó, bạn có thể phân tích cú pháp HTML bằng một gói khác có tên là Beautiful Soup. Cả hai gói đều là những người bạn đồng hành đáng tin cậy và hữu ích cho cuộc phiêu lưu quét web của bạn. Bạn sẽ thấy rằng Beautiful Soup sẽ đáp ứng hầu hết các nhu cầu phân tích cú pháp của bạn, bao gồm điều hướng và tìm kiếm nâng cao

Trong hướng dẫn này, bạn đã học cách thu thập dữ liệu từ Web bằng Python,

$ python -m pip install requests
2 và Beautiful Soup. Bạn đã tạo một tập lệnh tìm nạp các tin tuyển dụng từ Internet và thực hiện toàn bộ quy trình tìm kiếm trang web từ đầu đến cuối

Bạn đã học cách

  • Bước qua một đường ống cạo web từ đầu đến cuối
  • Kiểm tra cấu trúc HTML của trang web mục tiêu của bạn bằng các công cụ dành cho nhà phát triển của trình duyệt của bạn
  • Giải mã dữ liệu được mã hóa trong URL
  • Tải xuống nội dung HTML của trang bằng thư viện
    $ python -m pip install requests
    
    2 của Python
  • Phân tích cú pháp HTML đã tải xuống bằng Beautiful Soup để trích xuất thông tin liên quan
  • Xây dựng tập lệnh tìm nạp lời mời làm việc từ Web và hiển thị thông tin liên quan trong bảng điều khiển của bạn

Với hệ thống rộng lớn này và hai thư viện mạnh mẽ trong bộ công cụ của bạn, bạn có thể ra ngoài và xem những trang web nào khác mà bạn có thể cạo. Chúc bạn vui vẻ và luôn nhớ tôn trọng và sử dụng các kỹ năng lập trình của bạn một cách có trách nhiệm

Bạn có thể tải xuống mã nguồn của tập lệnh mẫu mà bạn đã tạo trong hướng dẫn này bằng cách nhấp vào liên kết bên dưới

Nhận mã mẫu. Nhấp vào đây để lấy mã mẫu mà bạn sẽ sử dụng cho dự án và các ví dụ trong hướng dẫn này

Đánh dấu là đã hoàn thành

Xem ngay Hướng dẫn này có một khóa học video liên quan do nhóm Real Python tạo. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn. Quét web bằng Beautiful Soup và Python

🐍 Thủ thuật Python 💌

Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python

Gửi cho tôi thủ thuật Python »

Giới thiệu về Martin Breuss

Martin thích tự động hóa, trò đùa ngớ ngẩn và rắn, tất cả đều phù hợp với cộng đồng Python. Anh ấy thích học hỏi và khám phá và cũng sẵn sàng nói về nó. Anh ấy viết và ghi nội dung cho Real Python và CodingNomads

» Thông tin thêm về Martin

Mỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là

Aldren

Bartosz

Geir Arne

Jaya

Joanna

Gia-cốp

Mike

Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bậc thầy Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bạn nghĩ sao?

Đánh giá bài viết này

Tweet Chia sẻ Chia sẻ Email

Bài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?

Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. Nhận các mẹo để đặt câu hỏi hay và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi

Bạn có thể viết mã Python trên một trang web không?

Ngôn ngữ lập trình Python là một tùy chọn có mục đích chung, nghĩa là ngôn ngữ này có thể được sử dụng để tạo hầu hết mọi loại chương trình máy tính, bao gồm cả trang web .

Bạn có thể viết mã HTML trên Python không?

Nếu bạn quan tâm đến việc phát triển web bằng Python thì việc biết HTML và CSS sẽ giúp bạn hiểu rõ hơn về các khung web như Django và Flask. Nhưng ngay cả khi bạn mới bắt đầu với Python, HTML và CSS có thể cho phép bạn tạo các trang web nhỏ để gây ấn tượng với bạn bè .

Mã nguồn trong ví dụ Python là gì?

Mã nguồn là cái mà chúng tôi gọi là các hướng dẫn máy tính mà con người có thể đọc được do các lập trình viên viết . Nó được viết bằng văn bản đơn giản. Chúng tôi viết nó mà không cần định dạng đặc biệt, chẳng hạn như in đậm, in nghiêng hoặc các loại phông chữ khác nhau. Nó chủ yếu chỉ là các nhân vật thực tế.

Python có ổn để phát triển web không?

Các tính năng cốt lõi của Python khiến nó trở thành một tùy chọn phổ biến để phát triển web . Thứ nhất, Python miễn phí, mã nguồn mở và được phổ biến rộng rãi. Tuy nhiên, quan trọng hơn, nó cũng có khả năng thích ứng cao. Python cho phép các nhà phát triển tạo trang web theo một số mô hình lập trình khác nhau.

Chủ Đề