Web Crawler เป็นคุณสมบัติในตัวของ API ของเรา มันเป็นเครื่องมือที่ใช้ในการค้นหา URL เป้าหมายเลือกเนื้อหาที่เกี่ยวข้องและส่งมอบเป็นกลุ่ม มันรวบรวมข้อมูลเว็บไซต์แบบเรียลไทม์และในระดับที่จะส่งเนื้อหาทั้งหมดอย่างรวดเร็วหรือเฉพาะข้อมูลที่คุณต้องการตามเกณฑ์ที่คุณเลือก
มีสามงานหลักที่นักรวบรวมข้อมูลเว็บสามารถทำได้:
ทำการค้นพบ URL
รวบรวมข้อมูลทั้งหมดในเว็บไซต์
ดัชนี URL ทั้งหมดในโดเมน
ใช้เมื่อคุณต้องการรวบรวมข้อมูลผ่านเว็บไซต์และรับข้อมูลที่แยกวิเคราะห์เป็นกลุ่มรวมทั้งรวบรวมรายการ URL ในหมวดหมู่เฉพาะหรือจากเว็บไซต์ทั้งหมด
มีสามประเภทข้อมูลที่คุณสามารถรับได้เมื่อใช้ Web Crawler: รายการ URL, ผลลัพธ์ที่แยกวิเคราะห์และไฟล์ HTML หากจำเป็นคุณสามารถตั้งค่า Web Crawler เพื่ออัปโหลดผลลัพธ์ไปยังที่เก็บข้อมูลบนคลาวด์ของคุณ
คุณสามารถควบคุมขอบเขตการคลานได้อย่างง่ายดายโดยการปรับความกว้างและความลึกด้วยตัวกรอง Web Crawler ยังสามารถใช้พารามิเตอร์การขูดต่างๆเช่นตำแหน่งทางภูมิศาสตร์และตัวแทนผู้ใช้เพื่อเพิ่มอัตราความสำเร็จของงานที่รวบรวมข้อมูล พารามิเตอร์การขูดเหล่านี้ส่วนใหญ่ขึ้นอยู่กับ 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
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 | ระบุว่า URL Web Crawler ใดจะขูด ดูส่วนนี้สำหรับข้อมูลเพิ่มเติม | - |
filters:max_depth | กำหนดความยาวสูงสุดของ URL Chains Web Crawler จะตามมา ดูส่วนนี้สำหรับข้อมูลเพิ่มเติม | 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
เพื่อความเรียบง่ายคุณสามารถใช้บุรุษไปรษณีย์ในการร้องขอการรวบรวมข้อมูล ดาวน์โหลดคอลเลกชัน Postman นี้เพื่อลองจุดสิ้นสุดทั้งหมดของ Web Crawler นี่คือการสอนวิดีโอทีละขั้นตอนที่คุณสามารถติดตามได้:
วิธีรวบรวมข้อมูลเว็บไซต์: คู่มือทีละขั้นตอน
ในการทำคำขอ HTTP ใน Python เราจะใช้ไลบรารีคำขอ ติดตั้งโดยป้อนสิ่งต่อไปนี้ในเทอร์มินัลของคุณ:
pip install requests
เพื่อจัดการกับผลลัพธ์ HTML เราจะใช้ไลบรารี BeautifulSoup4 เพื่อแยกวิเคราะห์ผลลัพธ์และทำให้พวกเขาอ่านได้มากขึ้น ขั้นตอนนี้เป็นทางเลือก แต่คุณสามารถติดตั้งไลบรารีนี้ด้วย:
pip install BeautifulSoup4
ในตัวอย่างต่อไปนี้เราใช้พารามิเตอร์ sitemap
เพื่อสร้างงานที่รวบรวมข้อมูลหน้าแรกของ Amazon และรับรายการ URL ที่พบภายในหน้าเริ่มต้น ด้วยพารามิเตอร์ crawl
และ process
ที่ถูกตั้งค่าเป็น “.*”
Web Crawler จะติดตามและส่งคืน URL ของ Amazon พารามิเตอร์ทั้งสองนี้ใช้นิพจน์ทั่วไป (regex) เพื่อกำหนดว่า 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 ())
ขึ้นอยู่กับขนาดของคำขอกระบวนการอาจใช้เวลาเล็กน้อย คุณสามารถตรวจสอบให้แน่ใจว่างานเสร็จสิ้นโดยการตรวจสอบ ข้อมูลงาน เมื่อเสร็จแล้วให้ส่งคำขออื่นไปยัง จุดสิ้นสุดของไซต์ 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}
id}/aggregate/ {Chunk 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 )
คุณสามารถแก้ไขไฟล์รหัสตามความต้องการของคุณ
บทช่วยสอนนี้ครอบคลุมถึงแง่มุมพื้นฐานของการใช้ Web Crawler เราขอแนะนำให้ดูที่เอกสารของเราสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้พารามิเตอร์ปลายทางและพารามิเตอร์แบบสอบถาม ในกรณีที่คุณมีคำถามใด ๆ คุณสามารถติดต่อเราได้ที่ [email protected] หรือผ่านการแชทสดบนเว็บไซต์ของเรา