Cách Lấy Api Của 1 Trang Web

Ngày nay, vày sự phổ biến tăng thêm của những khung công tác Javascript như React , nhiều trang web đang hiển thị văn bản động bằng phương pháp tải JSON hoặc XML tự chương trình hỗ trợ của chúng, có nghĩa là ít trang web được sản xuất phía vật dụng chủ và thay vào đó được hiển thị phía sản phẩm công nghệ khách .Bạn sẽ xem: bí quyết lấy api của 1 trang web

Trong bài xích đăng này, chúng ta sẽ tìm hiểu trang web của Wolt bằng phương pháp truy cập trực tiếp vào API của mình bằng một số trong những mã Python.

Bạn đang xem: Cách lấy api của 1 trang web

Wolt là một trong những nền tảng giao thứ ăn. Nó chất nhận được mọi bạn tìm thức ăn từ các công ty đối tác nhà hàng của họ để tự lấy hoặc nhờ đối tác giao hàng của họ giao.

Chúng tôi sẽ sử dụng Công cụ giành cho nhà cải cách và phát triển của Chrome để theo dõi tất cả các yêu mong mạng mà website của Wolt thực hiện với máy chủ và coi cách cửa hàng chúng tôi có thể triển khai các yêu mong tương tự bằng phương pháp sử dụng mã của riêng biệt mình. Dữ liệu công ty chúng tôi sẽ rước từ sever sẽ bao gồm thông tin về những nhà hàng kề bên như xếp hạng, tế bào tả, địa chỉ, giá giao hàng, v.v.

Đối cùng với điều này, shop chúng tôi sẽ sử dụng:

Python

Bất kỳ cơ hội nào nhiều người đang tải một trang web, các bạn đang thực hiện một yêu ước tới một vật dụng chủ. Khi chúng ta chỉ là một trong những con fan với trình duyệt, không có rất nhiều thiệt sợ mà bạn có thể gây ra. Mặc dù nhiên, khi viết mã để truy vấn một sản phẩm chủ, bạn cũng có thể gửi hàng ngàn yêu mong trong một giây. Điều đó hoàn toàn có thể khiến công ty sở hữu trang web phải trả không hề ít tiền với thậm chí tạm dừng hoạt động trang web của mình .

Với ý nghĩ đó - bạn có nhu cầu cẩn thận cùng với mã của bản thân và giới hạn con số yêu cầu bạn đang gửi đến sever để tránh khiến ra bất kỳ thiệt hại nào.

bắt đầu nào

Đầu tiên, hãy truy vấn trang web của Wolt, cho trang phục vụ (vì chúng tôi muốn tìm thông tin về các quán ăn gần đó) với nhấp vào Thêm địa chỉ.

Bây giờ, chúng ta hãy thử tra cứu phản ứng của sản phẩm chủ lúc tìm tìm các nhà hàng quán ăn lân cận. Mở Chrome DevTools bằng cách bấm chuột phải vào ngẫu nhiên đâu trên trang, nhấp vào Kiểm tra, chuyển mang lại tab Mạng cùng nhấn XHR. Bây chừ chúng ta sẽ có được một cái nào đó giống như sau:


*

Trong vỏ hộp tìm kiếm, hãy nhập thương hiệu đường, chẳng hạn như Allenby và nhấp vào tìm kiếm kiếm. Bây chừ chúng ta đang thấy một vài ba kết quả cân xứng với tróc nã vấn search kiếm của bọn chúng ta. Hãy lựa chọn 1 trong đông đảo ở Tel-Aviv Yafo, Israel .


*

Bây giờ bạn có thể thấy rằng tab Mạng trong Công cụ dành cho nhà trở nên tân tiến của Chrome tất cả 3 yêu cầu XHR mới. Lưu ý rằng gồm thể có khá nhiều hơn 3 yêu thương cầu, nó yêu thương cầu một trong những thử nghiệm và sai sót để tìm ra đúng đắn những gì shop chúng tôi đang search kiếm.


*

Hãy nhấp vào yêu thương cầu thứ nhất và tiếp nối là tab coi trước ở phía bên trái của Công cụ cách tân và phát triển Chrome. Điều này đang cho chúng ta thấy đánh giá từ sever trông như thế nào.

Xem thêm: Nữ Sinh Yêu Thầy Giáo - Nữ Sinh Có Tình Cảm Với Thầy Giáo, Phải Làm Sao


*

Chúng ta có thể thấy rằng sever trả về ý kiến JSON với danh sách các thành phố bao gồm đường Allenby. Nhưng ngóng đã- đó là phản hồi, còn yêu cầu thì sao? Để phát âm yêu cầu mà website gửi đến sever là gì và nó trông như thế nào, chúng tôi sẽ thực hiện curl.trillworks.com sẽ cho phép chúng tôi chuyển đổi cURL thanh lịch tập lệnh Python một phương pháp dễ dàng.

Hãy click chuột phải vào yêu thương cầu thứ nhất và nhấp vào Sao chép> sao chép dưới dạng cURL cùng dán nó vào nguyên lý của Trillworks.


*

Sau khi có tác dụng sạch mã một chút, cửa hàng chúng tôi có một cái gì đó trông y hệt như sau:

import requestsURL = "https://restaurant api.wolt.com/v1/google/places/autocomplete/json"headers = "user-agent": "Mozilla/5.0 (Macintosh; intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.68 Safari/537.36"params = response = requests.get(URL, headers=headers, params=params)print(response.text)

Sau đó, cửa hàng chúng tôi đang đặt những tham số về cơ bản là truy tìm vấn shop chúng tôi đang gửi đến máy chủ (hãy ghi nhớ khi cửa hàng chúng tôi nhập "Allenby" vào hộp tìm kiếm?).

Cuối cùng, cửa hàng chúng tôi đang nhờ cất hộ một yêu ước GET mang lại máy chủ bằng phương pháp sử dụng hàm request.get () với điểm cuối, title và các tham số của API mà cửa hàng chúng tôi đã đặt.

Mã này về cơ bạn dạng sẽ mô phỏng cùng một yêu ước mà trang web đang giữ hộ đến sever và sẽ được cho phép chúng tôi nhận ra phản hồi giống hệt như trang web đã nhận được.

Từ bình luận nhận được, shop chúng tôi sẽ chọn mục trước tiên từ danh sách những thành phố mà sever trả về, nó sẽ giống như sau:

"description": "Allenby Street, Tel Aviv-Yafo, Israel", "matched_substrings": , "place_id": "EiVBbGxlbmJ5IFN0cmVldCwgVGVsIEF2aXYtWWFmbywgSXNyYWVsIi4qLAoUChIJx0FPdoNMHRURoQbkZoqtGc8SFAoSCR98OxmmTB0VEZA_lsCicvvB", "reference": "EiVBbGxlbmJ5IFN0cmVldCwgVGVsIEF2aXYtWWFmbywgSXNyYWVsIi4qLAoUChIJx0FPdoNMHRURoQbkZoqtGc8SFAoSCR98OxmmTB0VEZA_lsCicvvB", "structured_formatting": "main_text": "Allenby Street", "main_text_matched_substrings": , "secondary_text": "Tel Aviv-Yafo, " "Israel", "terms": "types":

Bây tiếng hãy kiểm soát yêu ước thứ hai đến máy chủ.

Giống như trước đây, chúng tôi sao chép cURL của yêu ước và dán nó vào cách thức của TrillWorks và bây chừ chúng tôi tất cả một cái gì đó trông giống như sau:

import requestsURL = "https://restaurant-api.wolt.com/v1/google/geocode/json"headers = "user-agent": "Mozilla/5.0 (Macintosh; intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.68 Safari/537.36",params = response = requests.get(URL, headers=headers, params=params)print(response.text)

Chuyển mang đến yêu ước thứ ba, coppy cURL và biến hóa nó thanh lịch Python, đã trông như thế này:

import requestsURL = "https://restaurant-api.wolt.com/v1/pages/delivery"headers = "user-agent": "Mozilla/5.0 (Macintosh; hãng intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, lượt thích Gecko) Chrome/86.0.4240.68 Safari/537.36",params = response = requests.get(URL, headers=headers, params=params)print(response.text)

Đổi lại, công ty chúng tôi sẽ thừa nhận được bình luận JSON y như sau:

Mở rộng ở trong tính phần đang hiển thị một danh sách lớn lao các nhà hàng làm việc với Wolt với giao đồ ăn đến con đường phố được hỗ trợ và tin tức của họ.

Tôi lựa chọn nhà số 1 tiên để shop chúng tôi có thể xem tin tức nào tất cả sẵn trong phản bội hồi:

nắm tắt chúng tôi đang nhờ cất hộ một yêu ước GET tới sản phẩm chủ mang tên đường và nhận thấy phản hồi gồm chứa danh sách các thành phố có tên đường mà chúng tôi đã đi qua và id tương xứng của họ. Sau khi lựa chọn một thành phố, cửa hàng chúng tôi sẽ giữ hộ một yêu cầu GET không giống đến sever có id của tp đã chọn (trong trường vừa lòng của chúng tôi là Allenby sinh sống Tel-Aviv Yafo). Đổi lại, shop chúng tôi nhận được phản hồi JSON đựng Vĩ độ với Kinh độ của đường phố. Cuối cùng, chúng tôi đang gởi một yêu mong GET đến sever với Vĩ độ với Kinh độ của mặt đường phố và cảm nhận một JSON chứa toàn bộ thông tin về các nhà hàng quán ăn gần con đường mà cửa hàng chúng tôi đã đi qua.

import jsonimport requestsclass Wolt: HEADERS = "user-agent": "Mozilla/5.0 (Macintosh; hãng intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.68 Safari/537.36" PLACES_URL = "https://restaurant-api.wolt.com/v1/google/places/autocomplete/json" GOOGLE_GEOCODE_URL = "https://restaurant-api.wolt.com/v1/google/geocode/json" DELIVERY_URL = "https://restaurant-api.wolt.com/v1/pages/delivery"def get_matching_cities(self, street): """ :param street: a street name :return: a danh mục of dictionaries containing the all the cities that has the passed street name và its id """ params = "input": street response = json.loads(requests.get(self.PLACES_URL, headers=self.HEADERS, params=params).text) predictions = responsereturn , "place_id": result} for result in predictions> if response else Nonedef get_lat_lon(self, city_id): """ :param city_id: the ID of the city you want khổng lồ get the latitude & longitude of :return: dictionary containing the lat & lon of the """ params = "place_id": city_id response = json.loads(requests.get(self.GOOGLE_GEOCODE_URL, headers=self.HEADERS, params=params).text) lat_lon = response return lat_londef get_nearby_restaurants(self, lat, lon): """ :param lat: latitude of the street :param lon: longitude of the street :return: các mục of dictionaries containing all the available information about nearby restaurant """ params = "lat": lat, "lon": lon response = requests.get(self.DELIVERY_URL, headers=self.HEADERS, params=params).text restaurants = json.loads(response) return restaurantsif __name__ == "__main__": wolt = Wolt()# Get the matching streets cities = wolt.get_matching_cities("Allenby")# Select the first place (Allenby, Tel-Aviv Yafo) # và get the latitude and longitude of it city = cities lat_lon = wolt.get_lat_lon(city)# Pass the latitude và longitude lớn get all nearby restaurants restaurants = wolt.get_nearby_restaurants(lat_lon, lat_lon) print(restaurants)

nắm lược

Chúng ta rất có thể sử dụng mã theo nhiều cách khác nhau; chế tạo ra một bot Telegram thông tin cho công ty chúng tôi bất cứ khi nào nhà hàng mếm mộ của chúng tôi có sẵn để giao hàng, chế tạo một áp dụng có công dụng không sống thọ trong vận dụng / trang web của Wolt hoặc sử dụng nó để phân tích hoặc nghiên cứu.

Ghi chú pháp lý

Thông tin được cung ứng trong nội dung bài viết này chỉ giành riêng cho mục đích nghiên cứu và phân tích và việc sử dụng nó đã tự chịu rủi ro. Tuy nhiên thông tin từ sever được cung cấp công khai, một số trang web hoàn toàn có thể không cho phép truy cập dữ liệu công khai của họ bằng mã. Thông thường, vấn đề cạo sửa web hoàn toàn có thể được tiến hành mà không phải xin phép công ty sở hữu tài liệu nếu việc đó không vi phạm lao lý dịch vụ của trang web.

Leave a Reply

Your email address will not be published. Required fields are marked *

  • Phim thần tài đến 1999

  • Trần huyền linh hòa phát

  • Khe nứt san andreas vietsub

  • Không zoom nhỏ được trong cad

  • x

    Welcome Back!

    Login to your account below

    Retrieve your password

    Please enter your username or email address to reset your password.