บูรณาการ Scrapy กับ ScrapingBee API เพื่อใช้เบราว์เซอร์แบบไม่มีหัวสำหรับการหมุนของ JavaScript และพร็อกซี ต้องสร้างบัญชีบน ScrapingBee.com เพื่อรับคีย์ API
pip install scrapy-scrapingbee
เพิ่ม SCRAPINGBEE_API_KEY ของคุณและ ScrapingBeeMiddleware ในการตั้งค่าโครงการของคุณ อย่าลืมที่จะตั้ง CONCURRENT_REQUESTS ตามแผน ScrapingBee ของคุณ
SCRAPINGBEE_API_KEY = 'REPLACE-WITH-YOUR-API-KEY'
DOWNLOADER_MIDDLEWARES = {
'scrapy_scrapingbee.ScrapingBeeMiddleware' : 725 ,
}
CONCURRENT_REQUESTS = 1 สืบทอดแมงมุมของคุณจาก ScrapingBeeSpider และให้ ScrapingBeeRequest
Scrapingbeespider แทนที่ตัวบันทึกเริ่มต้นเพื่อซ่อนคีย์ API ของคุณในบันทึกการทำลาย
ด้านล่างคุณสามารถดูตัวอย่างจากแมงมุมใน httpbin.py
from scrapy_scrapingbee import ScrapingBeeSpider , ScrapingBeeRequest
JS_SNIPPET = 'window.scrollTo(0, document.body.scrollHeight);'
class HttpbinSpider ( ScrapingBeeSpider ):
name = 'httpbin'
start_urls = [
'https://httpbin.org' ,
]
def start_requests ( self ):
for url in self . start_urls :
yield ScrapingBeeRequest ( url , params = {
# 'render_js': False,
# 'block_ads': True,
# 'block_resources': False,
# 'js_snippet': JS_SNIPPET,
# 'premium_proxy': True,
# 'country_code': 'fr',
# 'return_page_source': True,
# 'wait': 3000,
# 'wait_for': '#swagger-ui',
},
headers = {
# 'Accept-Language': 'En-US',
},
cookies = {
# 'name_1': 'value_1',
})
def parse ( self , response ):
...คุณสามารถผ่านพารามิเตอร์ ScrapingBee ในอาร์กิวเมนต์ Params ของ ScrapingBeerequest ส่วนหัวและคุกกี้จะผ่านการร้องขอการทำลายปกติ ScrapingBeerequest รูปแบบพารามิเตอร์ส่วนหัวและคุกกี้ทั้งหมดไปยังรูปแบบที่คาดหวังโดย ScrapingBee API
เพิ่มคีย์ API ของคุณลงในการตั้งค่า py
ในการเรียกใช้ตัวอย่างที่คุณต้องโคลนที่เก็บนี้ ในเทอร์มินัลของคุณไปที่ examples/httpbin/httpbin และเรียกใช้แมงมุมตัวอย่างด้วย:
scrapy crawl httpbin