Bạn có thể sử dụng Python để tìm kiếm trên Google không?

Bài viết này tóm tắt các thư viện và gói phổ biến hiện tại khi triển khai các truy vấn tìm kiếm của Google bằng Python 3. 7. Động lực cho bài viết này bắt nguồn từ một số lượng lớn bất thường các yêu cầu mà tôi đã nhận được hoặc nhìn thấy liên quan đến chủ đề này. Lý do cơ bản cho điều này là việc ngừng sử dụng các API SOAP và AJAX của Google — cả hai đều được thiết kế cho mục đích chính xác này. Có nhiều lĩnh vực xung quanh khoa học dữ liệu và python được ghi lại rất tốt, nhưng tôi nhận thấy rằng việc sử dụng tìm kiếm Google trong Python không được ghi chép đầy đủ, đó là động lực của tôi cho bài viết này

Tìm kiếm của Google - Một sự cần thiết hiện đại

Việc sử dụng tìm kiếm của Google đã trở thành một phần quan trọng trong thời đại của chúng ta để mở khóa thông tin từ mọi nơi trên internet chỉ trong vòng vài mili giây. Trong hơn 20 năm qua, chúng tôi đã dựa vào phương pháp phổ biến này để truy vấn thông tin từ các bài báo, cho đến các chủ đề nghiên cứu. Với sự phát triển của khoa học dữ liệu trong vài năm qua, hai trong số những lý do phổ biến nhất để tìm kiếm trên internet là [1] giải quyết vấn đề với Stack Overflow hoặc [2] khai thác dữ liệu — lý do thứ hai sẽ là trọng tâm của bài viết này

Cho dù điều này được thực hiện vì mục đích khoa học hay dự án kinh doanh thông minh, Python và khai thác dữ liệu đã được chứng minh là một cặp công cụ rất hiệu quả. Khai thác dữ liệu được định nghĩa là phương pháp kiểm tra các tập dữ liệu lớn để trích xuất thông tin hoặc hiểu biết mới. Đối với mục đích của bài viết này vì nó liên quan đến web, phương pháp khai thác dữ liệu từ internet được gọi là khai thác web, có thể được chia thành ba loại. [1] Khai thác nội dung web, [2] Khai thác sử dụng web và [3] Khai thác cấu trúc web

Tìm kiếm của Google — Sơ đồ vĩ đại của vạn vật

Trong nhiều dự án gần đây mà tôi đã thấy liên quan đến khai thác web, phương pháp truy xuất dữ liệu ưa thích là sử dụng tìm kiếm trên google để truy xuất URL cho mục đích quét web. Phần lớn các dự án tuân theo định dạng chung này, trong đó các URL được lấy, mỗi URL được phân tích cú pháp và loại bỏ, và cuối cùng tất cả dữ liệu được sắp xếp. Vì mục đích của bài viết này, hiện tại chúng tôi sẽ chỉ tập trung vào quá trình truy xuất URL [phần màu xanh]. Điều quan trọng cần làm nổi bật là tùy thuộc vào loại dữ liệu bạn đang tìm kiếm; . Tất nhiên, điều này sẽ phụ thuộc nhiều vào việc nguồn dữ liệu bạn đang xem xét có cung cấp nguồn cấp dữ liệu RSS hay không. Chúng tôi sẽ xem xét lại vấn đề này trong giây lát

Luồng suy nghĩ chung trong bài viết này bắt đầu bằng việc truy xuất các URL, sau đó được phân tích cú pháp và sau đó được thiết lập để phân tích trong tương lai

Bây giờ chúng ta hãy kiểm tra một trường hợp sử dụng cụ thể. Chúng tôi muốn xác định và định lượng các bài báo của một công ty hoặc chủ đề quan tâm nhất định. Trong trường hợp này, tôi muốn tìm tất cả các bài viết liên quan đến những gì mọi người đang nói về iPhone mới của Apple Inc

Hãy bắt đầu - Chúng tôi có 3 tùy chọn để tìm kiếm qua Python

Vào ngày bài viết này được xuất bản, có ba thư viện phổ biến cho phép tìm kiếm Google qua Python. Chúng tôi sẽ bắt đầu với cách dễ nhất và chuyển sang cách phức tạp nhất vì tôi muốn đảm bảo rằng tất cả các nhà khoa học dữ liệu và tất cả những người đọc phi kỹ thuật đều có thể theo dõi. Điều đó nói rằng, bạn sẽ nhận thấy rằng mã tôi phác thảo không chính xác nhất là Python Pythonic. Trong khi viết bài này, tôi đã cố gắng duy trì sự cân bằng lành mạnh giữa “dễ dàng” và “hiệu quả” để đảm bảo tất cả người đọc đều được hưởng lợi từ điều này

Tùy chọn #1 — Thư viện ‘google’ [Miễn phí nhưng có giới hạn]

Chúng tôi bắt đầu bằng cách cài đặt thư viện google bằng cách sử dụng pip trên dòng lệnh đầu cuối

pip install google

Trong Notebook Jupyter của chúng tôi, sau đó chúng tôi có thể nhập thư viện qua

from googlesearch import search

Sau đó, chúng tôi phác thảo những gì chúng tôi muốn truy vấn. Trong trường hợp của chúng tôi, chúng tôi muốn theo dõi một công ty cụ thể hoặc một chủ đề. Hãy để chúng tôi lấy ví dụ về công ty “Apple” và chủ đề “iPhone” và lấy các bài báo về những

query = "apple iphone news 2019"

Bước tiếp theo là tạo một danh sách trống và sử dụng “vòng lặp for” để lặp qua mã

my_results_list = []for i in search[query,        # The query you want to run
tld = 'com', # The top level domain
lang = 'en', # The language
num = 10, # Number of results per page
start = 0, # First result to retrieve
stop = None, # Last result to retrieve
pause = 2.0, # Lapse between HTTP requests
]:
my_results_list.append[i]
print[i]

Đó là nó. Đã được thực hiện

Thư viện này hoạt động tốt và trả về kết quả đáng tin cậy [và miễn phí. ]. Tuy nhiên, có một khía cạnh mà chúng tôi đã không xem xét. Đối số "tạm dừng" trì hoãn truy vấn 2 giây mỗi lần. Điều này sẽ tăng đáng kể thời gian tìm kiếm của bạn nếu bạn đang tìm kiếm một số lượng lớn kết quả. Việc xóa đối số này thường sẽ dẫn đến lỗi 403 trong vòng vài giây [tức là Google dừng bạn]. Không có cách nào tốt để khắc phục vấn đề này [ít nhất là với gói cụ thể này] ngoài việc tuân thủ quy tắc 2 giây

Tùy chọn #2 — Thư viện kết quả tìm kiếm của google [Không miễn phí, không giới hạn]

Tùy chọn thứ hai ở đây là sử dụng khả năng tìm kiếm google của SERP

from serpapi.google_search_results import GoogleSearchResultsclient = GoogleSearchResults[
{"q" : "apple iphone news 2019", # The query
"location" : "Boston,MA", # Location
"secret_api_key" : "secretKey"} # API Key from SERP
]
result = client.get_dict[]
result

Mặc dù thư viện này có tính phí đi kèm, nhưng nó đáng để xem xét vì nó cho phép bạn vượt qua khoảng thời gian tạm dừng 2 giây đối với các yêu cầu HTTP trong thư viện google ở ​​trên trong Tùy chọn #1. Tóm lại, nó là một thư viện tuyệt vời nhưng nó không miễn phí

Tùy chọn #3 —Ứng dụng API của Google [Hầu hết là miễn phí, hầu hết là không giới hạn]

Ứng dụng khách Google API, theo hiểu biết của tôi, là mục duy nhất thuộc sở hữu của Google trong số những mục chúng tôi đã xem xét cho đến nay. Họ cung cấp một loạt các khả năng khi điều hướng không gian này. Tôi liệt kê chúng cuối cùng vì quá trình thiết lập tài khoản đầy đủ và sẵn sàng hoạt động có thể là một không gian khó điều hướng đối với một số người. Tuy nhiên, nếu bạn đang phát triển một mô hình phụ thuộc nhiều vào các truy vấn tìm kiếm, tôi khuyên bạn nên chuyển sang tùy chọn này hơn tất cả các tùy chọn khác

Trước đây, tôi đã cố gắng trình bày các bước cơ bản để đăng ký, nhưng các bước nhỏ trong quy trình dường như thay đổi khá thường xuyên. Tôi khuyên bạn nên bắt đầu bằng cách đọc trang “Bắt đầu” mới nhất trước. Khi bạn đã thiết lập một tài khoản, bạn sẽ cần lấy hai mục. [1] Khóa API riêng tư và [2] ID Công cụ Tìm kiếm Tùy chỉnh

Khi bạn đã thiết lập tài khoản của mình, hãy tiếp tục và cài đặt thư viện

pip install google-api-python-client

Với thư viện được cài đặt, bạn có thể tiếp tục và chạy truy vấn đầu tiên của mình

from googleapiclient.discovery import build   #Import the libraryapi_key = "my-secret-api-key"
cse_id = "my-secret-custom-search-id "
def google_query[query, api_key, cse_id, **kwargs]:
query_service = build["customsearch",
"v1",
developerKey=api_key
]
query_results = query_service.cse[].list[q=query, # Query
cx=cse_id, # CSE ID
**kwargs
].execute[]
return query_results['items']
my_results_list = []my_results = google_query["apple iphone news 2019",
api_key,
cse_id,
num = 10
]
for result in my_results:
my_results_list.append[result['link']]
print[result['link']]

Tùy chọn cuối cùng này là cách tôi cho là cách tốt nhất để truy xuất danh sách các URL [và thậm chí một số dữ liệu HTML thô. ] một cách đáng tin cậy và miễn phí

Với ba cách tiếp cận này đã kết thúc, chúng tôi kết thúc bằng một danh sách các URL mà giờ đây chúng tôi có thể phân tích cú pháp để truy xuất thông tin quan tâm. Một khía cạnh mà tôi muốn chỉ ra là chúng tôi đã tìm kiếm trên Google để lấy thông tin về một công ty hoặc chủ đề quan tâm. Người ta có thể lập luận rằng nguồn cấp dữ liệu RSS sẽ phù hợp hơn để truy xuất tin tức - và đó là. Tuy nhiên, khi nói đến quan điểm kinh doanh thông minh, chúng tôi muốn đảm bảo rằng tất cả các kết quả có liên quan đều có trong truy vấn của chúng tôi và dữ liệu không thiên về nguồn tin tức này so với nguồn tin tức khác. Một cách tiếp cận phổ biến là kết hợp các kết quả của truy vấn và nguồn cấp dữ liệu RSS với nhau, tuy nhiên, chúng ta sẽ thảo luận điều đó vào lúc khác

Tiến về phía trước và các bước tiếp theo

Bây giờ bạn đã có một danh sách các URL được thiết lập, mục tiêu tiếp theo của bạn là phân tích cú pháp các URL và truy xuất dữ liệu. Quét web là một lĩnh vực khoa học dữ liệu được ghi chép đầy đủ đã phát triển mạnh mẽ với các bài báo và hướng dẫn trong những năm gần đây. Điều đó nói rằng, tôi sẽ không đề cập đến nó trong bài viết này. Tuy nhiên, tôi sẽ cung cấp một số hướng dẫn về các bước tiếp theo

Nhìn lại khuôn khổ đã đề cập trước đó, bước tiếp theo là tìm kiếm dữ liệu trên web, sau đó sắp xếp nội dung phù hợp để chuẩn bị cho một mô hình được phát triển. Có một số thư viện khác nhau mà chúng tôi có thể sử dụng cho quy trình này. Scrapy là một khung công cụ quét tuyệt vời được gọi là gói “tất cả trong một” khi nói đến công cụ quét web. Mặt khác, chúng tôi có Selenium, một thư viện được thiết kế để tự động hóa trình duyệt cho phép bạn điều hướng giữa các trang. Cuối cùng, chúng ta có BeautifulSoup, một công cụ truy xuất dữ liệu thân thiện với người dùng và thận trọng hơn. Cho rằng BS4 đơn giản hơn và đáp ứng khá tốt nhu cầu của phần lớn các nhà khoa học dữ liệu, tôi khuyên bạn nên tiếp tục với điều đó

Có 3 thư viện chính thường được sử dụng để cạo các trang web. Tôi thấy BeautifulSoup là cách dễ học và làm theo nhất — do đó, chúng tôi sẽ lấy ví dụ này làm ví dụ cho bài viết và hướng dẫn này

Tôi hy vọng bạn thấy bài viết này hữu ích và cung cấp nhiều thông tin về việc sử dụng các truy vấn tìm kiếm trong Python 3. 7. Tôi kêu gọi bất cứ ai có chủ đề hoặc ý tưởng mà bạn muốn tôi trình bày, hãy gửi email cho tôi theo địa chỉ salehesam@gmail. com

Chủ Đề