Quét web bằng API trong Python

Nếu trong thế kỷ 20, chúng ta xử lý tư duy “thời gian là tiền bạc”, thì bây giờ tất cả là về dữ liệu. Nhiều dữ liệu hơn có nghĩa là nhiều thông tin chi tiết hơn, vì vậy các quyết định tốt hơn và nhiều tiền hơn

Công cụ quét web và công cụ quét web đã tăng lên rất nhiều trong thập kỷ qua, đặc biệt là. Ngày càng có nhiều doanh nghiệp cần một chiến lược tiếp thị chính xác, bao hàm lượng thông tin khổng lồ trong một khoảng thời gian ngắn

Với sự chú ý mới chiếu vào khai thác dữ liệu, các công ty bắt đầu thấy những cách mà họ có thể hưởng lợi. Đối với các nhà phát triển, đó có thể là một cách hay để thúc đẩy hoạt động kinh doanh của họ hoặc chỉ là một dự án gọn gàng để trau dồi kỹ năng viết mã của họ

Ngay cả khi công việc của bạn không liên quan gì đến quét web, nhưng bạn là một thành viên của nhóm Python, ở cuối bài viết này, bạn sẽ tìm hiểu về một lĩnh vực mới nơi bạn có thể tận dụng tốt các kỹ năng của mình. Chúng ta sẽ xem cách chúng ta có thể xây dựng Web Scraping của riêng mình bằng Python

Nhưng trước tiên, quét web có nghĩa là gì?

Quá trình này hữu ích hơn bạn tưởng nếu bạn cho rằng bạn càng có nhiều thông tin, bạn càng đưa ra quyết định tốt hơn trong công việc kinh doanh của mình

Ngày nay, các trang web ngày càng tải nhiều nội dung hơn, vì vậy thực hiện quá trình này hoàn toàn bằng tay không phải là một ý tưởng hay. Đó là nơi thảo luận về việc xây dựng một công cụ cạo tự động

“Tôi cần dữ liệu để làm gì?” . Chà, chúng ta hãy xem xét một số trường hợp sử dụng hàng đầu trong đó quét web là cứu cánh

  • tình báo giá. một công ty thương mại điện tử sẽ cần thông tin về giá của đối thủ cạnh tranh để đưa ra các quyết định tiếp thị và định giá tốt hơn
  • Nghiên cứu thị trường. phân tích thị trường có nghĩa là thông tin chất lượng cao, số lượng lớn và sâu sắc
  • Địa ốc. cá nhân hoặc doanh nghiệp cần tổng hợp ưu đãi từ nhiều nguồn
  • tạo khách hàng tiềm năng. tìm kiếm khách hàng cho doanh nghiệp đang phát triển của bạn
  • Giám sát thương hiệu. các công ty sẽ phân tích các diễn đàn, nền tảng truyền thông xã hội và đánh giá để theo dõi cách thương hiệu của họ được cảm nhận
  • Giám sát giá quảng cáo tối thiểu [MAP] đảm bảo rằng giá trực tuyến của một thương hiệu tương ứng với chính sách giá của nó
  • học máy. các nhà phát triển cần cung cấp dữ liệu đào tạo để các giải pháp do AI cung cấp của họ hoạt động chính xác

Bạn có thể tìm thêm các trường hợp sử dụng và mô tả chi tiết hơn về chúng tại đây

“Tuyệt, hãy bắt đầu nào. " bạn có thể nói. Không quá nhanh

Ngay cả khi bạn tìm ra cách hoạt động của công cụ quét web và cách nó có thể cải thiện công việc kinh doanh của bạn, thì việc xây dựng một công cụ quét web cũng không dễ dàng như vậy. Đối với những người mới bắt đầu, một số người không muốn có một cái cạp trên trang web của họ vì những lý do khác nhau

Một trong số đó là việc cạo có nghĩa là nhiều yêu cầu được gửi trong một giây, điều này có thể làm quá tải máy chủ. Chủ sở hữu trang web đôi khi có thể coi đây là cuộc tấn công của tin tặc [từ chối dịch vụ], vì vậy các trang web áp dụng các biện pháp để tự bảo vệ mình bằng cách chặn bot

Một số biện pháp này có thể được

  • chặn IP. điều này xảy ra khi một trang web phát hiện một số lượng lớn yêu cầu từ cùng một địa chỉ IP;
  • CAPTCHA [Các bài kiểm tra Turing công khai hoàn toàn tự động để phân biệt giữa máy tính và con người]. là những vấn đề logic khá tầm thường để giải quyết cho mọi người nhưng lại làm đau đầu những người dọn dẹp
  • Hũ mật ong. liên kết tích hợp vô hình với con người nhưng hiển thị với bot;
  • Yêu cầu đăng nhập. các trang web có thể ẩn một số thông tin bạn cần đằng sau trang đăng nhập;

Một số trang web có thể không triển khai các kỹ thuật này, nhưng thực tế đơn giản là họ muốn trải nghiệm người dùng tốt hơn khi sử dụng Javascript khiến cuộc sống của người quét web trở nên khó khăn hơn

Khi một trang web sử dụng Javascript hoặc khung tạo HTML, một số nội dung chỉ có thể truy cập được sau khi thực hiện một số tương tác với trang web hoặc sau khi thực thi tập lệnh [thường được viết bằng Javascript] để tạo tài liệu HTML

Chúng ta cũng hãy xem xét chất lượng của dữ liệu được trích xuất. Ví dụ: trên trang web thương mại điện tử, bạn có thể thấy các mức giá khác nhau tùy theo khu vực nơi bạn sinh sống. Dữ liệu này không chính xác lắm nên bot phải tìm cách trích xuất dữ liệu chính xác nhất có thể

Nếu bạn vượt qua được tất cả những điều này, bạn vẫn cần cân nhắc rằng cấu trúc của trang web luôn có thể bị thay đổi. Xét cho cùng, một trang web cần thân thiện với người dùng chứ không phải thân thiện với bot, vì vậy công cụ tự động của chúng tôi phải thích ứng với những thay đổi này

Trong cuộc chiến tranh giành không hồi kết này, các bot tự đưa ra giải pháp. Phạm vi của tất cả chúng là tái tạo hành vi của con người trên internet một cách tốt nhất có thể

Ví dụ: bạn có thể tránh chặn IP bằng cách sử dụng dịch vụ proxy IP. Tốt hơn là sử dụng các dịch vụ trả phí vì những dịch vụ miễn phí đặt IP của họ ở chế độ công khai để trang web có thể chặn chúng

Bạn cũng có thể tích hợp trình giải mã CAPTCHA. Chúng sẽ giúp bạn đạt được nguồn cấp dữ liệu liên tục nhưng sẽ làm chậm quá trình cạo một chút

Là một giải pháp cho các bẫy honeypot, bạn có thể sử dụng XPath [hoặc thậm chí là các biểu thức chính quy nếu bạn đủ táo bạo] để cạo các mục đã chỉ định thay vì toàn bộ tài liệu HTML

Xem xét tất cả những vấn đề này và cách khắc phục chúng có thể trở thành một quá trình khó khăn và tốn thời gian. Đó là lý do tại sao trong thập kỷ qua, các API quét web ngày càng được chú ý nhiều hơn.

Tại đây, trên WebScrapingAPI, chúng tôi thu thập nội dung HTML từ bất kỳ trang web nào, quản lý mọi thách thức có thể xảy ra [như những thách thức đã đề cập trước đó]. Ngoài ra, chúng tôi sử dụng Dịch vụ web của Amazon, vì vậy tốc độ và khả năng mở rộng không phải là vấn đề. Bạn có muốn thử không? . Dope, phải không?

Nhưng bây giờ, hãy quay lại mục đích của bài viết này. Chúng tôi muốn tìm hiểu cách tạo trình quét web bằng Python

Khái niệm cần biết đầu tiên là Giao thức truyền siêu văn bản [HTTP], giải thích giao tiếp giữa máy chủ và máy khách. Ý tưởng đằng sau đó khá đơn giản. Máy khách [ứng dụng] gửi tin nhắn [yêu cầu HTTP] đến máy chủ và máy chủ trả về phản hồi

Thông báo chứa nhiều thông tin mô tả máy khách và cách nó sẽ xử lý dữ liệu. phương thức, phiên bản HTTP và tiêu đề

Trong web scraping, phương pháp được sử dụng nhiều nhất cho một yêu cầu HTTP là GET. Điều đó nói rằng bạn sẽ truy xuất dữ liệu bạn yêu cầu. Nếu bạn muốn biết thêm về họ, bạn có thể tìm thấy ở đây một danh sách đầy đủ và chi tiết

Tiêu đề bao gồm thông tin bổ sung về yêu cầu hoặc phản hồi HTTP. Chúng tôi sẽ nói về những thứ có liên quan nhất trong việc quét web, nhưng bạn có thể tham khảo danh sách đầy đủ

  • Đại lý người dùng. được sử dụng để xác định ứng dụng, hệ điều hành, phần mềm và phiên bản của nó;
  • Bánh quy. chứa thông tin trạng thái về yêu cầu [ví dụ: mã thông báo xác thực]
  • Chủ nhà. chỉ định tên miền của máy chủ và cuối cùng là số cổng mà máy chủ đang lắng nghe
  • người giới thiệu. chứa trang nguồn mà người dùng đến từ đó;
  • Chấp nhận. thông báo cho máy chủ loại nội dung nào có thể trả về trong phản hồi;

Python là ngôn ngữ lập trình cấp cao và có mục đích chung, quản lý để giữ chính nó trong sở thích của các nhà phát triển vì nhiều lý do

  • mã có thể đọc được. cú pháp đơn giản của nó làm cho nó trở thành một lựa chọn hoàn hảo cho người mới bắt đầu
  • mô hình lập trình. lập trình hướng đối tượng, có cấu trúc, chức năng và hướng khía cạnh chỉ là một vài ví dụ
  • Thư viện tiêu chuẩn mạnh mẽ. nhiều loại mô-đun cho mọi nhu cầu
  • Cộng đồng năng động. nhiều thư viện và công cụ mã nguồn mở

Tốt, với những điều đã nói, hãy chuẩn bị không gian làm việc của chúng ta. Trước hết, chúng ta cần Python3. Bạn có thể tải xuống và cài đặt nó từ đây

Hướng dẫn này không liên quan đến IDE, vì vậy hãy thoải mái chọn bất cứ thứ gì bạn cảm thấy thoải mái. Chúng tôi thích Visual Studio Code hơn vì nó nhẹ và có sẵn cho nhiều ngôn ngữ

Chúng tôi cũng sẽ sử dụng một loạt các thư viện Python

  • yêu cầu. để thực hiện một yêu cầu HTTP
  • súp đẹp. để phân tích tài liệu HTML
  • selen. để cạo nội dung động
  • nltk [tùy chọn]. để xử lý ngôn ngữ tự nhiên

Bạn không cần phải cài đặt tất cả chúng trước vì có thêm chi tiết và hướng dẫn cài đặt ở mỗi bước

Bây giờ, hãy bắt đầu quét Web

Để giúp bạn dễ dàng hơn, hướng dẫn sẽ được chia thành các bước. Ngoài ra, bạn sẽ thấy một số bước tiền thưởng được đánh dấu bằng. 1 sau số. Chúng hoạt động như những lựa chọn thay thế mà bạn có thể quan tâm

Được rồi, tán gẫu đủ rồi, chúng ta hãy đi sâu vào nó

Trước tiên, chúng tôi cần chọn một trang web mà chúng tôi muốn cạo. Để minh họa các nguyên tắc, hãy chọn một trang web giáo dục đơn giản. https. // vi. wikipedia. org/wiki/Bia

Trong bước này, chúng tôi chỉ muốn kiểm tra tài liệu HTML của trang để có ý tưởng ngắn gọn về cấu trúc của nó. Việc bạn sử dụng trình duyệt hoặc hệ điều hành nào trong bước này không quan trọng; . Nhấp chuột phải vào bất kỳ đâu, trên một hình ảnh, một liên kết hoặc một khối văn bản đơn giản, sau đó chọn tùy chọn “Kiểm tra phần tử”

Tab “Thành phần” là thứ duy nhất chúng ta sẽ tập trung vào. Tùy thuộc vào trang web, bạn có thể thấy rất nhiều mã HTML. Điều quan trọng là không bị choáng ngợp bởi nó mà chỉ kiểm tra dữ liệu bạn quan tâm

Bây giờ chúng ta có thể bắt đầu viết mã cho trình quét web của mình. Chúng tôi chỉ cần bắt đầu bằng cách thực hiện một yêu cầu HTTP tới trang web của mình để trả về mã HTML đầy đủ mà chúng tôi vừa thấy trong trình duyệt. Nó trông như thế nào trong mã? . Rốt cuộc thì chúng ta đang nói về Python

Hãy cài đặt thư viện yêu cầu để thực hiện yêu cầu HTTP

pip install requests

Bây giờ hãy viết mã

import requests
URL = '//en.wikipedia.org/wiki/Beer'
page = requests.get[URL]

Khá đơn giản, phải không? . Sau đó, chúng tôi đã xác định URL của trang web mà chúng tôi muốn thu thập và chúng tôi đã thực hiện yêu cầu GET. Nếu bạn muốn xem kết quả là gì, hãy tìm nó và in nó. Hiện tại, bạn sẽ chỉ thấy một chuỗi lộn xộn đại diện cho HTML mà bạn đã thấy trong trình duyệt của mình. Nó không giúp chúng tôi quá nhiều, vì vậy chúng tôi cần xử lý nó

Để trích xuất một số thông tin hữu ích từ kết quả của chúng tôi, chúng tôi sẽ cài đặt thư viện beautifulsoup

pip install beautifulsoup4

Đầu tiên hãy định dạng đẹp cho kết quả của chúng ta

import requests
from bs4 import BeautifulSoup

URL = '//en.wikipedia.org/wiki/Beer'
page = requests.get[URL]

soup = BeautifulSoup[page.content, 'html.parser']
prettyHTML = soup.prettify[]
print[prettyHTML]

Chúng tôi chuyển đổi kết quả trước đó thành một đối tượng BeautifulSoup. với. thuộc tính nội dung, bạn có thể truy cập dữ liệu HTML. Áp dụng các. prettify[], bạn có thể thấy định dạng giống như bạn đã thấy trong trình duyệt của mình trước đó

Thật không may, không phải mọi trang web sẽ cung cấp cho bạn HTML đầy đủ của họ giống như thế này. Như đã nêu trước đó, có một số thách thức mà trình quét web gặp phải

Ví dụ: một số trang chỉ hiển thị sau khi đăng nhập. Ngay cả khi bạn xác thực từ trình duyệt của mình, tập lệnh python của bạn sẽ không thể truy cập dữ liệu

Một tình huống phổ biến khác là các trang web động. Điều đó có nghĩa là phản hồi yêu cầu GET không phải là tài liệu HTML mà là tập lệnh Javascript. Ngay cả khi bạn có thể thấy HTML trong trình duyệt, đó là do nó thực thi tập lệnh. Nhưng trong mã của bạn, bạn cần chạy tập lệnh cục bộ để lấy HTML

Nhưng hãy xem tình huống này trong thực tế. Chúng tôi sẽ chọn một ví dụ tối giản về một trang web được xây dựng nhanh chóng từ một bài tập cũ ở trường đại học. https. // trang web động. dâng trào. sh

Bạn có thể xem toàn bộ HTML trong trình duyệt của mình. Trong ví dụ này, đó là một bảng chứa hình ảnh trong các ô của nó

import requests
from bs4 import BeautifulSoup

URL = '//dynamic-website.surge.sh'
page = requests.get[URL]
soup = BeautifulSoup[page.content, 'html.parser']

file = open['page.txt', mode='w', encoding='utf-8']
file.write[soup.prettify[]]

Bây giờ, hãy trích xuất HTML này và điều này có nghĩa là chúng ta sẽ chạy mã giống như trước đó, với một vài thay đổi. chúng tôi đã cập nhật URL và mở tệp văn bản để lưu trữ kết quả của mình. Chúng tôi chạy chương trình và kiểm tra trang. txt cho cùng một phần bảng

Đó là gì? . Bạn có thể nhìn vào thẻ của tài liệu HTML để xem có tập lệnh nào được sử dụng không

Và vâng, chúng tôi sử dụng một kịch bản

Để giải quyết vấn đề này, chúng tôi cần Selenium, một thư viện được sử dụng để kiểm tra web và tự động hóa các hoạt động của trình duyệt. Chúng tôi sẽ sử dụng nó ở chế độ không đầu, có nghĩa là nó sẽ hoạt động giống như một trình duyệt thông thường sẽ thực thi mã Javascript nhưng không có giao diện người dùng hiển thị

pip install selenium

Trong hướng dẫn này, chúng tôi sẽ sử dụng ChromeDriver để định cấu hình trình điều khiển web cho Selenium. Chỉ cần nhớ sao chép đường dẫn nơi bạn tải xuống. Chúng tôi đã lưu nó trong thư mục C, nhưng bất kỳ vị trí nào cũng sẽ hoạt động

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup

CHROMEDRIVER_PATH = "your/path/here/chromedriver_win32/chromedriver"
URL = "//dynamic-website.surge.sh"

options = Options[]
options.headless = True
driver = webdriver.Chrome[CHROMEDRIVER_PATH, options=options]

driver.get[URL]
soup = BeautifulSoup[driver.page_source, 'html.parser']

file = open['page.txt', mode='w', encoding='utf-8']
file.write[soup.prettify[]]

Phần còn lại của quy trình gần như giống nhau, ngoại trừ việc chúng tôi không còn sử dụng thư viện yêu cầu để thực hiện yêu cầu HTTP

Chúng tôi chạy lại chương trình, và…

thì đấy. Bây giờ chúng tôi có HTML đầy đủ

Được rồi, hãy trở lại đường đua

Có HTML đầy đủ là tiến bộ tuyệt vời, nhưng quá trình này chưa kết thúc. Hầu hết thời gian, chúng tôi cần thông tin cụ thể từ một trang web, vì vậy hãy xem cách chúng tôi có thể trích xuất thông tin đó

Hãy bắt đầu với một cái gì đó nhỏ -  tiêu đề của trang web. Bạn có thể tìm thấy nó trong phần của HTML, bên dưới thẻ .
print['Thành phần tiêu đề. ', tiêu đề]

#đầu ra. Bia - Wikipedia
print['Tiêu đề. ', Tiêu đề. văn bản]

def main[].
URL = 'https. // vi. wikipedia. org/wiki/Bia'
trang = yêu cầu. get[URL]
soup = BeautifulSoup[trang. nội dung, 'html. trình phân tích cú pháp']

extract_title[súp]

chủ yếu[]

Không có khoa học tên lửa ở đây. BeautifulSoup là một thư viện mạnh mẽ và hỗ trợ nhiều kiểu trích xuất dữ liệu cụ thể. Bạn có thể lấy các phần tử HTML theo tên, id và thuộc tính lớp của chúng hoặc thậm chí bạn có thể sử dụng bộ chọn CSS. Giới hạn của bầu trời

Hãy tìm hiểu thêm, chẳng hạn như trích xuất các phần tử xuất hiện nhiều lần. Trong trường hợp này, chúng tôi sử dụng. phương thức find_all[]. Sự khác biệt duy nhất là nó trả về một danh sách các phần tử thay vì chỉ một. Đó là lý do tại sao sau đó, chúng tôi lặp qua nó và hiển thị các thuộc tính của từng phần tử. Ví dụ, chúng tôi trích xuất tất cả các hình ảnh từ bài viết

def extract_images[soup]:
images = soup.find_all['img']
for image in images:
imageAlt = image.get['alt']
imageSrc = image.get['src']
print["ALT: ", imageAlt, "SRC: ", imageSrc]

def main[]:
URL = '//en.wikipedia.org/wiki/Beer'
page = requests.get[URL]
soup = BeautifulSoup[page.content, 'html.parser']

extract_images[soup]

main[]

Một tình huống phổ biến trong việc quét web là khi danh sách kết quả phân tích cú pháp rất dài và chứa thông tin hỗn hợp

Ví dụ: bạn có thể nhận thấy rằng các hình ảnh trước đây của chúng tôi có thể chứa hoặc không chứa thuộc tính alt

Hoặc tưởng tượng chúng ta sẽ trích xuất tất cả các liên kết từ bài viết. Tất cả chúng ta đều biết rằng một bài viết trên Wikipedia có RẤT NHIỀU liên kết và chúng ta có thể không muốn có một danh sách đầy đủ về chúng. Kết quả sẽ có các liên kết bên ngoài và bên trong, tài liệu tham khảo và trích dẫn, vì vậy chúng ta cần phân loại chúng thành nhiều loại

Để giải quyết vấn đề này, chúng ta sẽ sử dụng hàm lambda. Về cơ bản, lambda sẽ lấy mỗi phần tử từ danh sách kết quả làm tham số và áp dụng điều kiện do chúng tôi xác định, giống như sử dụng bộ lọc

Đối với một ví dụ thực tế, giả sử chúng ta cần trích xuất tất cả các liên kết nội bộ, truy cập bài viết của họ và tạo một bản tóm tắt về từng liên kết. Xem xét rằng một trong những trường hợp sử dụng của Python là Trí tuệ nhân tạo, ví dụ này có thể là một ứng dụng tuyệt vời để lấy dữ liệu đào tạo

Trước hết, chúng ta sẽ cần cài đặt thư viện NLTK vì tính toán một bản tóm tắt có nghĩa là xử lý ngôn ngữ của con người

________số 8

Và, tất nhiên, để nhập nó vào mã của chúng tôi

import re
import nltk
import heapq
# need to download only for the first execution
# warning: the size of the dataset is big; hence it will take time
nltk.download[]

Ghi chú. nếu bạn là người dùng macOS, bạn có thể nhận được “SSL. xác minh chứng chỉ không thành công" lỗi. Nguyên nhân có thể là Python3. 6 sử dụng phiên bản nhúng của OpenSSL. Tất cả những gì bạn phải làm là mở vị trí bạn đã cài đặt Python và chạy tệp này

import requests
URL = '//en.wikipedia.org/wiki/Beer'
page = requests.get[URL]
0

Như bạn có thể thấy, chúng tôi cũng đã nhập thư viện re, được sử dụng cho các hoạt động với biểu thức chính quy và heapq, triển khai hàng đợi heap

Tốt, chúng tôi có tất cả những gì chúng tôi cần để bắt đầu viết mã. Hãy bắt đầu bằng cách trích xuất các liên kết nội bộ. Nếu bạn quay lại trình duyệt, bạn sẽ nhận thấy một vài điều về các yếu tố chúng tôi quan tâm

Những thứ đó sẽ là

  • Thuộc tính href có một giá trị;
  • Giá trị href bắt đầu bằng “/wiki/”;
  • Cha của liên kết là một

    nhãn;

Những đặc điểm này sẽ giúp chúng tôi phân biệt các liên kết chúng tôi cần với tất cả các liên kết khác

Bây giờ chúng ta đã biết cách tìm các liên kết, hãy xem cách chúng ta có thể trích xuất chúng

import requests
URL = '//en.wikipedia.org/wiki/Beer'
page = requests.get[URL]
1

Được rồi, vậy chuyện gì đã xảy ra ở đây? . phương thức find_all[]. Điều đó có nghĩa là chúng tôi chỉ chọn những thẻ phù hợp với điều kiện của mình từ tất cả các thẻ của tài liệu HTML

Như bạn có thể thấy, điều kiện của thẻ là phải là một liên kết và được chấp nhận bởi hàm can_do_summary[] được xác định ở trên. Ở đó, chúng tôi từ chối mọi thứ không phù hợp với các đặc điểm được quan sát trước đó. Ngoài ra, chúng tôi đã sử dụng một biến toàn cục để giới hạn số lượng liên kết được trích xuất là 10. Nếu bạn cần tất cả chúng, vui lòng xóa biến đếm

Cuối cùng, chúng tôi gọi hàm compute_summary[] cho liên kết mới tìm thấy. Đó là nơi bài viết được tóm tắt

import requests
URL = '//en.wikipedia.org/wiki/Beer'
page = requests.get[URL]
2

Tóm lại, chúng tôi tạo một yêu cầu HTTP tới URL mới tìm thấy và chuyển đổi kết quả thành một đối tượng BeautifulSoup, giống như chúng tôi đã làm ở đầu bài viết

Để tính toán một bản tóm tắt, chúng tôi trích xuất tất cả các đoạn từ bài báo và nối chúng lại với nhau. Sau đó, chúng tôi xóa tất cả các ký tự đặc biệt có thể ảnh hưởng đến việc tính toán

Nói một cách đơn giản, một bản tóm tắt được thực hiện bằng cách tính toán các từ xuất hiện nhiều nhất và cho điểm mỗi câu dựa trên mức độ xuất hiện thường xuyên của các từ đó. Cuối cùng ta chọn ra top 7 câu có số điểm cao nhất

Đây không phải là chủ đề của bài viết của chúng tôi, nhưng bạn có thể đọc thêm ở đây nếu bạn tò mò hoặc thậm chí đam mê Xử lý ngôn ngữ tự nhiên

Chuyển sang bước cuối cùng của hướng dẫn này, chúng ta cần xem xét kết quả cạo. Cho đến bây giờ, chúng tôi chỉ hiển thị chúng trong thiết bị đầu cuối vì chỉ có một vài hàng dữ liệu

Nhưng việc cạo trong đời thực có nghĩa là một lượng thông tin đáng kể, vì vậy chúng ta nên xem cách lưu kết quả vào một tệp

Hãy sử dụng thư viện gốc csv [vì vậy không cần phải cài đặt bất cứ thứ gì khác] và mở một tệp có tên là tóm tắt. csv

import requests
URL = '//en.wikipedia.org/wiki/Beer'
page = requests.get[URL]
3

Thư viện sẽ tạo tệp nếu nó không tồn tại. Ngoài ra, chúng tôi mở nó ở chế độ 'chắp thêm' vì mỗi liên kết được xử lý tuần tự, từng cái một

import requests
URL = '//en.wikipedia.org/wiki/Beer'
page = requests.get[URL]
4

Khi kết thúc hàm compute_summary[], chúng ta chỉ cần khởi tạo trình ghi và bắt đầu nối thêm dữ liệu. Một hàng bao gồm URL của bài viết và tóm tắt của nó

Một định dạng tuần tự hóa dữ liệu khác đã trở nên phổ biến trong những năm qua là Ký hiệu đối tượng JavaScript [JSON]. Con người có thể dễ dàng đọc được và tiện dụng nếu bạn muốn chuyển dữ liệu đã cạo sang API hoặc ứng dụng khác

Trong Python, cách dễ nhất để viết tệp JSON là truyền dữ liệu vào đối tượng dict

import requests
URL = '//en.wikipedia.org/wiki/Beer'
page = requests.get[URL]
5

Chúng tôi sẽ sử dụng thư viện gốc cho các tệp JSON và mở một tệp mới, giống như chúng tôi đã làm trước đây với tệp CSV của mình. Sau đó, chúng tôi khởi tạo một đối tượng dict trống và một danh sách trống sẽ chứa các bản tóm tắt của chúng tôi

import requests
URL = '//en.wikipedia.org/wiki/Beer'
page = requests.get[URL]
6

Ở cuối hàm compute_summary[], ngay tại nơi chúng ta đã viết trong CSV trước đó, bây giờ chúng ta thêm một đối tượng dict mới vào danh sách cuối cùng

import requests
URL = '//en.wikipedia.org/wiki/Beer'
page = requests.get[URL]
7

Và cuối cùng, trong hàm main[] của chúng ta, sau khi chúng ta thực hiện quá trình extract_links[], chúng ta ghi đối tượng cuối cùng vào tệp. Tham số thụt lề sẽ chỉ định dạng đẹp cho kết quả

Chà, vậy là xong, kết thúc hướng dẫn của chúng tôi. Tôi hy vọng nó hữu ích và cung cấp cho bạn một số thông tin chi tiết về việc quét web bằng Python

Chúng tôi đã tìm hiểu về lợi ích của nó và cách nó có thể cải thiện doanh nghiệp/ứng dụng của bạn. Đồng thời, chúng tôi đã cân bằng thông tin này với một số thách thức gặp phải khi quét web

Nếu bạn là nhà phát triển, bạn có thể thấy thú vị khi xây dựng công cụ quét web của riêng mình bằng cách khắc phục tất cả các vấn đề này. Nó có thể là một kinh nghiệm học tập tuyệt vời

Nhưng với tư cách là chủ doanh nghiệp [hoặc là người cần dữ liệu cho ứng dụng quy mô lớn ngoài đời thực], bạn có thể muốn tránh các chi phí liên quan [thời gian, tiền bạc, con người]

Trong tình huống này, sử dụng API chuyên dụng sẽ giải quyết được vấn đề. WebScrapingAPI vượt qua tất cả các điểm chặn có thể. Kết xuất Javascript, proxy, CAPTHA, v.v. và cung cấp các tính năng có thể tùy chỉnh. Ngoài ra, nếu bạn không hoàn toàn chắc chắn về điều đó, hãy nhớ rằng có một tùy chọn gói miễn phí, vậy tại sao bạn không thử?

Làm cách nào để sử dụng API trong quét web?

Tìm kiếm trên web tập trung vào việc truy xuất thông tin cụ thể từ nhiều trang web. Sau đó, ứng dụng và công cụ chuyển đổi dữ liệu đồ sộ thành định dạng có cấu trúc cho người dùng. Trong khi đó, thông qua API [Giao diện lập trình ứng dụng], người ta có thể truy cập vào dữ liệu của một ứng dụng hoặc hệ điều hành .

Bạn có thể quét web bằng Python không?

Một gói hữu ích để quét web mà bạn có thể tìm thấy trong thư viện chuẩn của Python là urllib , chứa các công cụ để làm việc với URL. Đặc biệt, urllib. mô-đun yêu cầu chứa một hàm gọi là urlopen[] mà bạn có thể sử dụng để mở một URL trong một chương trình.

Bạn có thể sử dụng Python với API không?

Khi sử dụng API với Python, bạn chỉ cần một thư viện. yêu cầu . Với nó, bạn sẽ có thể thực hiện hầu hết, nếu không muốn nói là tất cả, các hành động cần thiết để sử dụng bất kỳ API công khai nào. Để làm theo các ví dụ về mã trong hướng dẫn này, hãy đảm bảo rằng bạn đang sử dụng Python 3. 8.

Làm cách nào để tìm nạp dữ liệu từ API trong Python?

Các bước lấy dữ liệu từ API bằng Python .
Kết nối với một API. Lúc đầu, chúng tôi cần kết nối với API và tạo kết nối an toàn như hình bên dưới–.
Lấy dữ liệu từ API. .
Phân tích dữ liệu thành định dạng JSON. .
Trích xuất dữ liệu và in nó

Chủ Đề