Hướng dẫn how do i scrape google search results in python? - làm cách nào để xóa kết quả tìm kiếm google trong python?

Bài viết này sẽ cung cấp cho bạn một ví dụ thực hành về cách bạn có thể xóa kết quả tìm kiếm của Google. Nó hiển thị hai phương thức để lấy nội dung từ tìm kiếm Google: tự mình thực hiện mọi thứ và sử dụng API SERP. Trừ khi công cụ tìm kiếm trải qua những thay đổi lớn, bạn sẽ có thể sao chép các ví dụ mã bằng cách chỉ điều chỉnh một vài tham số. Bắt đầu nào!

Nội dung

  • Còn API tìm kiếm Google thì sao?
  • Xây dựng một cái cào web cơ bản
  • Thêm các tính năng nâng cao
  • Sử dụng API SERP
  • Bất kỳ phương pháp khác?

Đợi đã - còn API tìm kiếm Google thì sao?

Cái gì, bây giờ? Ah, phải, API tìm kiếm Google. Về mặt kỹ thuật, công ty cung cấp một cách chính thức để trích xuất dữ liệu từ công cụ tìm kiếm của mình. Nó & nbsp; đến và đi, nhưng nó hiện tại & nbsp; có sẵn & nbsp; cho bất kỳ ai cần thông tin SERP. Tuy nhiên, nó thực sự không phải là một công cụ tuyệt vời cho công việc:

  • API được thực hiện để tìm kiếm trong một trang web hoặc một nhóm nhỏ các trang web. Bạn có thể định cấu hình nó để tìm kiếm toàn bộ web nhưng điều đó đòi hỏi phải mày mò. You can configure it to search the whole web but that requires tinkering.
  • API cung cấp thông tin ít hơn và hạn chế hơn so với cả giao diện trực quan và các công cụ cạo web. compared to both the visual interface and web scraping tools.
  • API tốn rất nhiều tiền: 1.000 yêu cầu sẽ khiến bạn nghèo hơn 5 đô la, đó là một vụ cướp ánh sáng ban ngày. Có nhiều giới hạn hơn về số lượng yêu cầu hàng ngày bạn có thể thực hiện.: 1,000 requests will leave you $5 poorer, which is a daylight robbery. There are further limits on the number of daily requests you can make.

Nhìn chung, API tìm kiếm của Google thực sự là một thứ gì đó mà bạn muốn sử dụng khi xem xét các hạn chế của nó. Tin tôi đi, bạn sẽ tiết kiệm cả tiền và sự tỉnh táo bằng cách đi theo con đường quét web.

Xây dựng một cái cào web cơ bản

Thêm các tính năng nâng cao

Sử dụng API SERP

Bất kỳ phương pháp khác?

Đợi đã - còn API tìm kiếm Google thì sao?

Cái gì, bây giờ? Ah, phải, API tìm kiếm Google. Về mặt kỹ thuật, công ty cung cấp một cách chính thức để trích xuất dữ liệu từ công cụ tìm kiếm của mình. Nó & nbsp; đến và đi, nhưng nó hiện tại & nbsp; có sẵn & nbsp; cho bất kỳ ai cần thông tin SERP. Tuy nhiên, nó thực sự không phải là một công cụ tuyệt vời cho công việc:

def do_it_yourself_simple():
    """If you had to do it yourself"""
    domain = 'com'
    payload = {
        'q': 'car insurance',  # Query.
        # You'd need to figure out how to generate this.
        'uule': 'w+CAIQICIHR2VybWFueQ',  # Location.
    }

    results = []  # Parsed results.

    params = urlencode(payload)
    url = f'https://www.google.{domain}/search?{params}'

API được thực hiện để tìm kiếm trong một trang web hoặc một nhóm nhỏ các trang web. Bạn có thể định cấu hình nó để tìm kiếm toàn bộ web nhưng điều đó đòi hỏi phải mày mò.this guide

API cung cấp thông tin ít hơn và hạn chế hơn so với cả giao diện trực quan và các công cụ cạo web.

API tốn rất nhiều tiền: 1.000 yêu cầu sẽ khiến bạn nghèo hơn 5 đô la, đó là một vụ cướp ánh sáng ban ngày. Có nhiều giới hạn hơn về số lượng yêu cầu hàng ngày bạn có thể thực hiện.

Nhìn chung, API tìm kiếm của Google thực sự là một thứ gì đó mà bạn muốn sử dụng khi xem xét các hạn chế của nó. Tin tôi đi, bạn sẽ tiết kiệm cả tiền và sự tỉnh táo bằng cách đi theo con đường quét web.

Phần này của hướng dẫn sẽ chỉ cho bạn cách xây dựng một cái cào rất cơ bản có thể trích xuất kết quả từ tìm kiếm của Google. Các chức năng của nó sẽ bao gồm tải xuống mã HTML, phân tích cú pháp tiêu đề trang, mô tả và URL và lưu dữ liệu ở định dạng .json.

    # Scrape.
    response = requests.get(url=url)

Đầu tiên, chúng ta cần nhập các mô -đun cần thiết:

    # Parse.
    parser = etree.HTMLParser()
    tree = etree.fromstring(
    response.text,
    parser,
    )

import json
from urllib.parse import urlencode
import requests
from lxml import etree

google inspect element

Chúng tôi cần JSON vì đó sẽ là định dạng đầu ra của chúng tôi. URLENCODE sẽ giúp chúng tôi tránh mã hóa các vấn đề khi làm việc với các tham số URL Google Google (cụ thể hơn là ký hiệu +). Yêu cầu là thư viện Python tiêu chuẩn để thực hiện các yêu cầu HTTP. Và LXML sẽ là trình phân tích cú pháp của chúng tôi; Ngoài ra, bạn có thể sử dụng súp đẹp.

Bước thứ hai là tạo một chức năng cho truy vấn của chúng tôi:

    result_elements = tree.xpath(
        './/div['
        '   contains(@class, "ZINbbc") '
        '   and not(@style="display:none")'
        ']'
        '['
        '   descendant::div[@class="kCrYT"] '
        '   and not(descendant::*[@class="X7NTVe"])'  # maps
        '   and not(descendant::*[contains(@class, "deIvCb")])'  # stories
        ']',
    )

Ở đây chúng tôi đã chọn miền chúng tôi muốn trích xuất dữ liệu từ - trong trường hợp này, .com. Sau đó, chúng tôi đã tạo ra một tải trọng với thông tin về truy vấn (bảo hiểm xe hơi) và vị trí của chúng tôi (Đức). Tham số vị trí được gọi là uule. Bạn có thể tìm thấy nó bằng cách sử dụng hướng dẫn này. & NBSP;

Đối tượng PARAMS cho phép truy vấn của chúng tôi bao gồm dấu +. Đây là nơi thư viện UrlenCode phát huy tác dụng. Không có nó, chức năng của bạn có thể bị hỏng, bởi vì nó sẽ hiển thị không gian trong chuỗi truy vấn dưới dạng Unicode: %20. & nbsp;

    for element in result_elements:
        results.append(
            {
                'url': element.xpath('.//a/@href')[0],
                'title': element.xpath('.//h3//text()')[0],
                'description': element.xpath(
                    './/div[contains(@class, "BNeawe")]//text()',
                )[-1],
                # Other fields you would want.
            }
        )

Đối tượng URL kết hợp URL từ các tham số của chúng tôi.

    with open('diy_parsed_result_simple.json', 'w+') as f:
        f.write(json.dumps(results, indent=2))

Kết quả tạo ra một đối tượng để lưu dữ liệu phân tích cú pháp của chúng tôi. & NBSP;

Thêm các tính năng nâng cao

Sử dụng API SERP

Bất kỳ phương pháp khác?just them won’t be enough to sustain any serious web scraping operation. It takes more than that to scrape Google seriously. Still, it’s a good starting point. 

Đại lý người dùng

Một tác nhân người dùng hiển thị trang web mà thiết bị và trình duyệt mà bạn sử dụng để kết nối. Nó rất quan trọng bởi vì không có ai, máy cạo web của bạn sẽ rất rõ ràng và không ai thích bị cạo. Vì vậy, trong khi nó không đủ, một tác nhân người dùng thực sự đi một chặng đường dài hướng tới việc tránh các khối không mong muốn.

Thêm một tác nhân người dùng vào mã của chúng tôi thực sự khá đơn giản. Ở đây, chức năng tương tự chúng tôi thực hiện lúc đầu. Chỉ lần này, nó có năm tác nhân người dùng khác nhau trong đối tượng tiêu đề được chọn ngẫu nhiên:

def do_it_yourself_advanced():
    """If you had to do it yourself"""
    domain = 'com'
    pages = 2
    payload = {
        'q': 'car insurance',  # Query.
        # You'd need to figure out how to generate this.
        'uule': 'w+CAIQICIHR2VybWFueQ',  # Location.
    }
    headers = {
        'User-Agent': random.choice(
            [
                'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36',
                'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36',
                'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0',
                'Mozilla/5.0 (Windows NT 10.0; Win 64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36',
                'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36',
            ]
        )          
    }

Lưu ý: Để ngẫu nhiên hóa các đại lý người dùng, chúng tôi sẽ cần nhập một mô -đun bổ sung có tên là Random. to randomize the user agents, we’ll need to import an additional module called random.

Phân trang

Tất nhiên, chúng tôi sẽ muốn loại bỏ chỉ một trang kết quả tìm kiếm của Google. Vấn đề ở đây là gì? Vì vậy, chúng tôi sẽ muốn thêm phân trang. Nó rất đơn giản để làm, thực sự - chúng ta chỉ cần thêm một tham số gọi là trang và vòng lặp:one page of Google Search results. What’s the point? So, we’ll want to add pagination. It’s pretty simple to do, actually – we just need one more parameter called pages and a loop:

def do_it_yourself_advanced():
    """If you had to do it yourself"""
    domain = 'com'
    pages = 2
    payload = {
        'q': 'car insurance',  # Query.
        # You'd need to figure out how to generate this.
        'uule': 'w+CAIQICIHR2VybWFueQ',  # Location.
    }
    headers = {
        'User-Agent': random.choice(
            [
                'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36',
                'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36',
                'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0',
                'Mozilla/5.0 (Windows NT 10.0; Win 64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36',
                'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36',
            ]
        )          
    } 

    results = []  # Parsed results. 

    for count in range(0, pages * 10, 10): 
        payload['start'] = count  # One page is equal to 10 google results. 

        params = urlencode(payload) 
        url = f'https://www.google.{domain}/search?{params}'

Proxy

Một điều khác chúng ta có thể cần để nhân rộng là proxy. Các trang web nhăn mặt với nhiều yêu cầu kết nối từ cùng một địa chỉ IP, vì vậy, một lần nữa, một lần nữa, hãy xoay chúng một lần. Bao gồm các proxy là một vấn đề hai dòng; Chúng tôi sẽ làm tổ chúng bên trong vòng lặp phân trang của chúng tôi:

    for count in range(0, pages * 10, 10):
        payload['start'] = count  # One page is equal to 10 google results.

        params = urlencode(payload)
        url = f'https://www.google.{domain}/search?{params}'
        proxies = {
        'https': 'http://:@:',
        }

Xin lưu ý rằng phương pháp này giả định rằng bạn đang sử dụng một mạng proxy xoay và bạn đã giành được sự cần thiết phải tự xử lý logic xoay vòng.

Ở đây, mẫu mã đầy đủ:

def do_it_yourself_simple():
    """If you had to do it yourself"""
    domain = 'com'
    payload = {
        'q': 'car insurance',  # Query.
        # You'd need to figure out how to generate this.
        'uule': 'w+CAIQICIHR2VybWFueQ',  # Location.
    }

    results = []  # Parsed results.

    params = urlencode(payload)
    url = f'https://www.google.{domain}/search?{params}'
0

Đó là nó cho phần đầu tiên! Bây giờ, hãy để thử thử làm điều tương tự với một công cụ chuyên dụng - API SERP. & NBSP;

Sử dụng API SERP

Trước khi chúng ta đi sâu vào mã - API SERP là cái quái gì? Nói một cách đơn giản, nó giống như một cái cào web từ xa xử lý hầu hết các logic cào cho bạn. Thay vì tự xây dựng mọi thứ, bạn chỉ cần cung cấp cho nó các từ khóa và tham số bạn muốn, sau đó lưu dữ liệu trong cơ sở dữ liệu. Vì vậy, không phân tích cú pháp, không có proxy, không có captchas - tất cả mọi thứ mà API được API. & NBSP;

Trong ví dụ này, chúng tôi sẽ sử dụng một công cụ có tên SERPMaster. Chúng tôi thích nó bởi vì nó linh hoạt và có chức năng đáng ngạc nhiên với giá thấp. Serpmaster hỗ trợ một số phương thức truy xuất dữ liệu; Chúng tôi sẽ chọn thời gian thực, có nghĩa là chúng tôi sẽ nhận được dữ liệu qua kết nối mở. Một phương thức khác, gọi lại, sẽ cho phép chúng tôi thu thập đầu ra theo yêu cầu thông qua Webhook. & NBSP; & nbsp; & nbsp; & nbsp;

Để đạt được kết quả tương tự như với máy cạo Web DIY của chúng tôi, tất cả các mã chúng tôi cần là:

def do_it_yourself_simple():
    """If you had to do it yourself"""
    domain = 'com'
    payload = {
        'q': 'car insurance',  # Query.
        # You'd need to figure out how to generate this.
        'uule': 'w+CAIQICIHR2VybWFueQ',  # Location.
    }

    results = []  # Parsed results.

    params = urlencode(payload)
    url = f'https://www.google.{domain}/search?{params}'
1

So với kịch bản trước đây của chúng tôi, cái này hiệu quả hơn nhiều. Một chức năng bao gồm:

  1. Tải trọng với một số tham số đơn giản,
  2. Một vòng lặp phân trang,
  3. Yêu cầu bài đăng cho serpmaster với thông tin đăng nhập,
  4. và một tệp .json cho đầu ra.

Đó là nó. Chúng ta không cần phải lo lắng về việc hình thành URL phù hợp, logic phân tích cú pháp của chúng ta được gói gọn trong một dòng, chúng ta có thể chọn bất kỳ vị trí địa lý nào chúng ta thích và các proxy đã được tích hợp. Cách tiếp cận này cũng sẽ mở rộng quy mô mà không cần nhiều nỗ lực. & nbsp;

Nhưng: tiện lợi tốn tiền, do đó, một điều có thể khiến bạn phải nhảy vào API SERP. Điều đó nói rằng, Serpmaster có một phiên tòa miễn phí; Bạn có thể thử một vài trăm yêu cầu để xem nó có xứng đáng với nó không.

Bất kỳ phương pháp khác?

Có cách nào khác để loại bỏ tìm kiếm google không? Đúng. Các lựa chọn thay thế sẽ là sử dụng máy cạo web trực quan, mở rộng trình duyệt hoặc dịch vụ thu thập dữ liệu. Hãy để một thời gian ngắn chạy qua từng.

Visual Web Scraper

Trình lưu trữ web trực quan là các chương trình cho phép bạn trích xuất dữ liệu từ Google mà không cần bất kỳ trải nghiệm mã hóa nào. Họ cung cấp cho bạn một cửa sổ trình duyệt, nơi bạn chỉ cần chỉ và nhấp vào các điểm dữ liệu bạn muốn cạo và tải chúng theo định dạng bạn chọn. Phần khó nhất là xây dựng một quy trình làm việc thích hợp của các cuộc tấn công và các vòng lặp hành động, nhưng điều đó vẫn dễ dàng so với việc tự viết mã.

Khi nào bạn nên nhận được một máy cạo Web trực quan? & NBSP; khi bạn cần một lượng dữ liệu nhỏ vừa phải và không có kinh nghiệm mã hóa. When you need a small-moderate amount of data and have no coding experience.

Những người phế liệu web trực quan nào sẽ sử dụng? & NBSP; Parsehub và Octopara là hai tùy chọn tuyệt vời. Chúng tôi là một phần của Octoparse vì nó có UI nhẹ hơn và các mẫu trước để quét cơ bản nhanh chóng. ParseHub and Octoparse are two great options. We’re partial to Octoparse because it has a lighter UI and premade templates for quick basic scraping.

Mở rộng trình duyệt

Các tiện ích mở rộng trình duyệt cung cấp một trong những cách đơn giản nhất để bắt đầu tìm kiếm tìm kiếm của Google. Tất cả những gì bạn cần làm là thêm chúng vào trình duyệt của bạn. Sau đó, quá trình này rất giống với một máy cạo Web Visual: Point và nhấp vào các phần tử trang web và tải chúng xuống máy tính của bạn. Các phần mở rộng như vậy là mạnh mẽ đáng ngạc nhiên; Họ có thể xử lý JS, phân trang và thậm chí thực hiện các hành động như điền vào hình thức.

Khi nào bạn nên sử dụng tiện ích mở rộng trình duyệt web? & NBSP; Khi bạn cần dữ liệu nhanh chóng và không công phu từ Google Search.When you need quick and not very elaborate data from Google Search.

Những phần mở rộng trình duyệt nào sẽ sử dụng? & Nbsp; chúng tôi thích cào web. Nó có một phần mở rộng miễn phí cho Chrome và Firefox tự nhúng vào các công cụ của nhà phát triển. Một giải pháp thay thế sẽ là công cụ khai thác dữ liệu cho Chrome. Loại thứ hai dễ sử dụng hơn một chút và có hàng ngàn công khai & nbsp; công thức nấu ăn & nbsp; (bộ phế liệu được xây dựng trước bạn có thể sử dụng). We like Web Scraper. It’s a free extension for Chrome and Firefox that embeds itself into the developer tools. An alternative would be Data Miner for Chrome. The latter is a little easier to use and has thousands of public recipes (pre-built scrapers you can use).

Dịch vụ thu thập dữ liệu

Dịch vụ thu thập dữ liệu là phương pháp dễ nhất để lấy dữ liệu từ tìm kiếm Google. Bạn chỉ định các yêu cầu, ngân sách của bạn, và sau đó nhận được kết quả tất cả được định dạng độc đáo để sử dụng thêm. Đó là về nó. Bạn không cần phải xây dựng hoặc duy trì một cái cào, lo lắng về logic cạo hoặc thậm chí các khía cạnh pháp lý của dự án cào của bạn. Lo lắng duy nhất của bạn sẽ là tiền.

Khi nào bạn nên sử dụng dịch vụ thu thập dữ liệu? & NBSP; Điều này khá đơn giản: Khi bạn chạy một dự án từ giữa đến quy mô lớn, có tiền và không ai xây dựng một cái cào web cho bạn. This one’s pretty simple: when you’re running a mid to large-scale project, have the funds, and no one to build a web scraper for you.

Chọn dịch vụ thu thập dữ liệu nào? & NBSP; Không thiếu các công ty cung cấp dịch vụ thu thập dữ liệu. Một số ví dụ sẽ là ScrapingHub và dữ liệu sáng.There’s no shortage of companies that provide data collection services. Some examples would be ScrapingHub and Bright Data.

Bạn có thể loại bỏ kết quả tìm kiếm của Google Python không?

Bạn luôn có thể trực tiếp xóa kết quả Google.Để làm điều này, bạn có thể sử dụng URL https://google.com/search?q= Điều này sẽ trả về 10 kết quả tìm kiếm hàng đầu.Trong một số trường hợp, URL kết quả sẽ chuyển hướng đến Google.Thông thường, nó chứa một tham số truy vấn Q sẽ chứa URL yêu cầu thực tế.. To do this, you can use the URL https://google.com/search?q= this will return the top 10 search results. In some cases the resulting URL will redirect to Google. Usually it contains a query-parameter q which will contain the actual request URL.

Bạn có được phép loại bỏ kết quả tìm kiếm của Google không?

Câu hỏi thường gặp.Bạn có thể xóa kết quả tìm kiếm của Google không?Đúng.Bạn có thể cạo Google SERP bằng cách sử dụng công cụ tìm kiếm Google tìm kiếm.Yes. You can scrape Google SERP by using Google Search Scraper tool.

Web có được cào với Python hợp pháp không?

Cạo cho mục đích cá nhân thường là ok, ngay cả khi đó là thông tin có bản quyền, vì nó có thể nằm trong quy định sử dụng hợp lý của luật sở hữu trí tuệ.Tuy nhiên, việc chia sẻ dữ liệu mà bạn không có quyền chia sẻ là bất hợp pháp.. However, sharing data for which you don't hold the right to share is illegal.