Web Crawler-это встроенная функция наших скребков. Это инструмент, используемый для обнаружения целевых URL -адресов, выбора соответствующего контента и поставить его оптом. Он заполняет веб-сайты в режиме реального времени и в масштабе, чтобы быстро доставить весь контент или только те данные, которые вам нужны, на основе выбранных вами критериев.
Есть три основных задачи, которые может сделать веб -гусеница:
Выполнить URL Discovery;
Ползайте все страницы на сайте;
Индексировать все URL -адреса на домене.
Используйте его, когда вам нужно проползти по сайту и получить анализируемые данные оптом, а также собирать список URL -адресов в определенной категории или с всего веб -сайта.
Существует три типа вывода данных, которые вы можете получить при использовании Web Crawler: список URL -адресов, проанализированных результатов и HTML -файлов. При необходимости вы можете установить веб -хрупщик для загрузки результатов в свое облачное хранилище.
Вы можете легко управлять областью ползания, регулируя его ширину и глубину фильтрами. Веб-гусеницы также могут использовать различные параметры очистки, такие как геолокация и пользовательский агент, для повышения уровня успешной задачи ползания. Большинство из этих параметров царапины зависят от используемого вами API скребка.
Чтобы контролировать вашу ползательную работу, вам нужно использовать разные конечные точки. Вы можете инициировать, остановить и возобновить свою работу, получить информацию о работе, получить список кусков результатов и получить результаты. Ниже приведены конечные точки, которые мы используем в этом учебном пособии. Для получения дополнительной информации и примеров вывода посетите нашу документацию.
Конечная точка: https://ect.oxylabs.io/v1/jobs
Метод: POST
Аутентификация: Basic
Заголовки запроса: Content-Type: application/json
Эта конечная точка предоставит список URL -адресов, найденных при обработке работы.
Конечная точка: https://ect.oxylabs.io/v1/jobs/{id}/sitemap
Метод: GET
Аутентификация: Basic
Конечная точка: https://ect.oxylabs.io/v1/jobs/{id}/aggregate
Метод: GET
Аутентификация: Basic
Совокупные результаты могут состоять из большого количества данных, поэтому мы разделим их на несколько кусков на основе указанного вами размера чанка. Используйте эту конечную точку, чтобы получить список кусочных файлов.
Конечная точка: https://ect.oxylabs.io/v1/jobs/{id}/aggregate/{chunk}
Метод: GET
Аутентификация: Basic
С этой конечной точкой вы можете скачать определенный кусок совокупного результата. Содержимое тела ответа зависит от выбранного вами типа вывода.
Результат может быть одним из следующих действий:
Индекс (список URL)
Совокупный файл json со всеми анализом результатов
Совокупный файл json со всеми результатами HTML
Для вашего удобства мы поместили все доступные параметры, которые вы можете использовать в таблице ниже. Это также можно найти в нашей документации.
Параметр | Описание | Значение по умолчанию |
---|---|---|
URL | URL отправной точки | - |
filters | Эти параметры используются для настройки широты и глубины задания ползания, а также для определения того, какие URL должны быть включены в конечный результат. Смотрите этот раздел для получения дополнительной информации. | - |
filters:crawl | Определяет, какие URL -адрес Web Crawler будет включать в конечный результат. Смотрите этот раздел для получения дополнительной информации. | - |
filters:process | Определяет, какие URLS Web Crawler будет очищать. Смотрите этот раздел для получения дополнительной информации. | - |
filters:max_depth | Определяет максимальную длину цепочек URL -цепочек, который будет следовать. Смотрите этот раздел для получения дополнительной информации. | 1 |
scrape_params | Эти параметры используются для точной настройки того, как мы выполняем задание по цене. Например, вы можете захотеть, чтобы мы выполнили JavaScript во время ползания сайта, или вы можете предпочесть, чтобы мы использовали прокси из определенного места. | - |
scrape_params:source | Смотрите этот раздел для получения дополнительной информации. | - |
scrape_params:geo_location | Географическое местоположение, для которого результат должен быть адаптирован. Смотрите этот раздел для получения дополнительной информации. | - |
scrape_params:user_agent_type | Тип устройства и браузер. Смотрите этот раздел для получения дополнительной информации. | desktop |
scrape_params:render | Включает рендеринг JavaScript. Используйте, когда цель требует JavaScript для загрузки контента. Если вы хотите использовать эту функцию, установите значение параметра в HTML. Смотрите этот раздел для получения дополнительной информации. | - |
output:type_ | Вывод типа. Мы можем вернуть карту сайта (список URL -адресов, найденных во время ползания) или агрегатный файл, содержащий результаты HTML или аналитические данные. Смотрите этот раздел для получения дополнительной информации. | - |
upload | Эти параметры используются для описания местоположения облачного хранения, где вы хотите, чтобы мы поместили результат, как только мы закончим. Смотрите этот раздел для получения дополнительной информации. | - |
upload:storage_type | Определите тип облачного хранилища. Единственное допустимое значение - S3 (для AWS S3). GCS (для Google Cloud Storage) скоро появится. | - |
upload:storage_url | URL -адрес хранения. | - |
Использование этих параметров является простым, так как вы можете передать их с помощью полезной нагрузки запроса. Ниже вы можете найти примеры кода в Python.
Для простоты вы можете использовать почтальона для выполнения запросов ползания. Загрузите эту коллекцию почты, чтобы попробовать все конечные точки веб -гусени. Вот пошаговый видеоурок, за которым вы можете следовать:
Как ползти на веб-сайте: пошаговое руководство
Чтобы сделать HTTP -запросы в Python, мы будем использовать библиотеку запросов. Установите его, введя следующее в вашем терминале:
pip install requests
Чтобы справиться с результатами HTML, мы будем использовать библиотеку BeautifulSoup4 для анализа результатов и сделать их более читаемыми. Этот шаг необязательно, но вы можете установить эту библиотеку с:
pip install BeautifulSoup4
В следующем примере мы используем параметр sitemap
для создания задания, которая ползает на домашней странице Amazon и получает список URL -адресов, найденных на стартовой странице. С установленными параметрами crawl
и process
“.*”
Web Crawler последует и вернет любой URL Amazon. Эти два параметра используют регулярные выражения (recex), чтобы определить, какие URL -адреса должны быть заполнены и обработаны. Обязательно посетите нашу документацию для получения более подробной информации и полезных ресурсов.
Нам не нужно включать параметр source
, потому что мы еще не соскаблируем контент из URL -адресов. Используя модуль json
, мы записываем данные в файл .JSON , а затем, с модулем pprint
, мы печатаем структурированный контент. Посмотрим пример:
import requests , json
from pprint import pprint
# Set the content type to JSON.
headers = { "Content-Type" : "application/json" }
# Crawl all URLs inside the target URL.
payload = {
"url" : "https://www.amazon.com/" ,
"filters" : {
"crawl" : [ ".*" ],
"process" : [ ".*" ],
"max_depth" : 1
},
"scrape_params" : {
"user_agent_type" : "desktop" ,
},
"output" : {
"type_" : "sitemap"
}
}
# Create a job and store the JSON response.
response = requests . request (
'POST' ,
'https://ect.oxylabs.io/v1/jobs' ,
auth = ( 'USERNAME' , 'PASSWORD' ), # Your credentials go here.
headers = headers ,
json = payload ,
)
# Write the decoded JSON response to a .json file.
with open ( 'job_sitemap.json' , 'w' ) as f :
json . dump ( response . json (), f )
# Print the decoded JSON response.
pprint ( response . json ())
В зависимости от размера запроса, процесс может занять немного времени. Вы можете убедиться, что работа завершена путем проверки информации о работе . Когда это будет сделано, отправьте еще один запрос в конечную точку Sitemap https://ect.oxylabs.io/v1/jobs/{id}/sitemap
чтобы вернуть список URL. Например:
import requests , json
from pprint import pprint
# Store the JSON response containing URLs (sitemap).
sitemap = requests . request (
'GET' ,
'https://ect.oxylabs.io/v1/jobs/{id}/sitemap' , # Replace {id] with the job ID.
auth = ( 'USERNAME' , 'PASSWORD' ), # Your credentials go here.
)
# Write the decoded JSON response to a .json file.
with open ( 'sitemap.json' , 'w' ) as f :
json . dump ( sitemap . json (), f )
# Print the decoded JSON response.
pprint ( sitemap . json ())
Чтобы получить анализируемый контент, используйте parsed
параметр. Используя пример ниже, мы можем ползти все URL -адреса, найденные на этой странице Amazon, а затем анализировать содержание каждого URL. На этот раз мы используем источник amazon
, поскольку мы скрещиваем контент с указанной страницы Amazon. Итак, давайте посмотрим, что все это собрано в Python:
import requests , json
from pprint import pprint
# Set the content type to JSON.
headers = { "Content-Type" : "application/json" }
# Parse content from the URLs found in the target URL.
payload = {
"url" : "https://www.amazon.com/s?i=electronics-intl-ship&bbn=16225009011&rh=n%3A502394%2Cn%3A281052&dc&qid"
"=1679564333&rnid=502394&ref=sr_pg_1" ,
"filters" : {
"crawl" : [ ".*" ],
"process" : [ ".*" ],
"max_depth" : 1
},
"scrape_params" : {
"source" : "amazon" ,
"user_agent_type" : "desktop"
},
"output" : {
"type_" : "parsed"
}
}
# Create a job and store the JSON response.
response = requests . request (
'POST' ,
'https://ect.oxylabs.io/v1/jobs' ,
auth = ( 'USERNAME' , 'PASSWORD' ), # Your credentials go here.
headers = headers ,
json = payload ,
)
# Write the decoded JSON response to a .json file.
with open ( 'job_parsed.json' , 'w' ) as f :
json . dump ( response . json (), f )
# Print the decoded JSON response.
pprint ( response . json ())
Обратите внимание, что если вы хотите использовать параметр geo_location
при скребке страниц Amazon, вы должны установить его значение в почтовый/почтовый код предпочтительного места. Для получения дополнительной информации посетите эту страницу в нашей документации.
Как только задание будет завершено, вы можете проверить, сколько кусков сгенерировал ваш запрос, а затем загрузить контент из каждой части с этой конечной точкой: https://ect.oxylabs.io/v1/jobs/{id}/aggregate/{chunk}
. Например, со следующим фрагментом кода мы печатаем первый кусок:
import requests , json
from pprint import pprint
# Store the JSON response containing parsed results.
parsed_results = requests . request (
'GET' ,
'https://ect.oxylabs.io/v1/jobs/{id}/aggregate/1' , # Replace {id] with the job ID.
auth = ( 'USERNAME' , 'PASSWORD' ), # Your credentials go here.
)
# Write the decoded JSON response to a .json file.
with open ( 'parsed_results_1.json' , 'w' ) as f :
json . dump ( parsed_results . json (), f )
# Print the decoded JSON response.
pprint ( parsed_results . json ())
Код для получения результатов HTML не сильно отличается от кода в предыдущем разделе. Единственное отличие состоит в том, что мы установили параметр type_
в html
. Посмотрим на пример кода:
import requests , json
from pprint import pprint
# Set the content type to JSON.
headers = { "Content-Type" : "application/json" }
# Index HTML results of URLs found in the target URL.
payload = {
"url" : "https://www.amazon.com/s?i=electronics-intl-ship&bbn=16225009011&rh=n%3A502394%2Cn%3A281052&dc&qid"
"=1679564333&rnid=502394&ref=sr_pg_1" ,
"filters" : {
"crawl" : [ ".*" ],
"process" : [ ".*" ],
"max_depth" : 1
},
"scrape_params" : {
"source" : "universal" ,
"user_agent_type" : "desktop"
},
"output" : {
"type_" : "html"
}
}
# Create a job and store the JSON response.
response = requests . request (
'POST' ,
'https://ect.oxylabs.io/v1/jobs' ,
auth = ( 'USERNAME' , 'PASSWORD' ), # Your credentials go here
headers = headers ,
json = payload ,
)
# Write the decoded JSON response to a .json file.
with open ( 'job_html.json' , 'w' ) as f :
json . dump ( response . json (), f )
# Print the decoded JSON response.
pprint ( response . json ())
Опять же, вам нужно будет сделать запрос, чтобы получить каждый кусок результата. Мы будем использовать библиотеку BeautifulSoup4 для разбора HTML, но этот шаг не является обязательным. Затем мы записываем анализированный контент в файл .html . Пример кода ниже загружает контент с первой части:
import requests
from bs4 import BeautifulSoup
# Store the JSON response containing HTML results.
html_response = requests . request (
'GET' ,
'https://ect.oxylabs.io/v1/jobs/{id}/aggregate/1' , # Replace {id] with the job ID.
auth = ( 'USERNAME' , 'PASSWORD' ), # Your credentials go here.
)
# Parse the HTML content.
soup = BeautifulSoup ( html_response . content , 'html.parser' )
html_results = soup . prettify ()
# Write the HTML results to an .html file.
with open ( 'html_results.html' , 'w' ) as f :
f . write ( html_results )
# Print the HTML results.
print ( html_results )
Вы можете изменить файлы кода по мере необходимости в соответствии с вашими требованиями.
В этом учебном пособии рассматривались фундаментальные аспекты использования веб -гусеницы. Мы рекомендуем посмотреть на нашу документацию для получения дополнительной информации об использовании конечных точек и параметров запроса. Если у вас есть какие -либо вопросы, вы всегда можете связаться с нами по адресу [email protected] или через живой чат на нашем веб -сайте.