จะลบอักขระหรือสัญลักษณ์พิเศษออกจาก URL เริ่มต้นของ Scrapy ได้อย่างไร

ฉันได้รับ Scrapy Spider และเมื่อฉันเรียกใช้โค้ด ฉันได้รับข้อผิดพลาดนี้

ละเว้นการตอบสนอง ‹302 https://www.macys.com/>: รหัสสถานะ HTTP ไม่ได้รับการจัดการหรือ ไม่ได้รับอนุญาต

นี่แมงมุมของฉัน

import scrapy
import urllib.parse
import random

class MacysspiderSpider(scrapy.Spider):
    name = 'macysSpider'
    allowed_domains = ['macys.com']
    start_urls = ['https://macys.com']

    def parse(self, response):
        pass

ฉันตรวจสอบ URL แล้ว และเมื่อฉันเรียกใช้โค้ด มันมี ">" ที่ส่วนท้ายของ URL

https://www.macys.com/>

ฉันจะลบ UTF-8 นี้ออกจาก URL เริ่มต้นได้อย่างไร


person Santha Kumar    schedule 18.07.2019    source แหล่งที่มา


คำตอบ (1)


ไม่แน่ใจว่าคุณพบ '>' อยู่ที่ไหนซึ่งเป็นส่วนหนึ่งของ url แต่ฉันไม่คิดว่าจะเกี่ยวข้องกับปัญหาอะไร คุณต้องตั้งค่าส่วนหัวเพื่อขูดเว็บไซต์นี้:

headers = {
    'authority': 'www.macys.com',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
    'accept-encoding': 'gzip, deflate, br',
    'accept-language': 'en-GB,en;q=0.9,nl-BE;q=0.8,nl;q=0.7,ro-RO;q=0.6,ro;q=0.5,en-US;q=0.4',
}

หากต้องการนำการเปลี่ยนแปลงเหล่านี้ไปใช้กับคำขอแรกของคุณ คุณสามารถเขียนทับเมธอด start_requests ได้ดังนี้:

def start_requests(self):
    for url in self.start_urls:
        yield Request(url, headers=self.headers)
person Wim Hermans    schedule 18.07.2019