【问题标题】:Web Scraping Error - ERROR for site owner: Invalid domain for site key网页抓取错误 - 网站所有者的错误:网站密钥的域无效
【发布时间】:2020-05-27 13:59:12
【问题描述】:

我试图获取此 URL 的内容 - https://www.zillow.com/homedetails/131-Avenida-Dr-Berkeley-CA-94708/24844204_zpid/ 我用刮痧。这是我的代码。

import scrapy
class QuotesSpider(scrapy.Spider):
    name = "quotes"
    start_urls = [
        'https://www.zillow.com/homedetails/131-Avenida-Dr-Berkeley-CA-94708/24844204_zpid/',
    ]
    def parse(self, response):
        filename = 'test.html'
        with open(filename, 'wb') as f:
            f.write(response.body)
        self.log('Saved file %s' % filename)

我打开了抓取的数据(test.html),我得到了这个内容。 我试图找到解决方案并尝试了这个 - ERROR for site owner: Invalid domain for site key 但这并没有解决我的问题。

【问题讨论】:

    标签: python web-scraping scrapy recaptcha


    【解决方案1】:

    首先,试试这个方法,看看是否可行:

    Headerz = {
        "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
        "accept-encoding": "gzip, deflate, br",
        "accept-language": "en-US,en;q=0.9",
        "cache-control": "no-cache",
        "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
        "pragma": "no-cache",
        "sec-fetch-mode": "navigate",
        "sec-fetch-site": "cross-site",
        "sec-fetch-user": "?1",
        "upgrade-insecure-requests": "1",
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36",
    }
    
    class QuotesSpider(scrapy.Spider):
        name = "quotes"
        start_urls = [
            'https://www.zillow.com/homedetails/131-Avenida-Dr-Berkeley-CA-94708/24844204_zpid/',
        ]
    
        def start_requests(self):
            yield scrapy.Request(start_urls[0], callback=self.parse, headers=Headerz)
    
        def parse(self, response):
            filename = 'test.html'
            with open(filename, 'wb') as f:
                f.write(response.body)
            self.log('Saved file %s' % filename)
    

    我们在普通浏览器中看不到输出的原因是我们没有使用浏览器总是发送的正确标头。

    您需要按照上述代码中的说明添加标头,或者通过在 settings.py 中更新它们来添加标头。

    更好的方法是使用“rotating-proxies”存储库和“rotating-user-agent”存储库。

    【讨论】:

    • 谢谢@Janib Soomro。您的解决方案解决了我的问题。太棒了!
    猜你喜欢
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    相关资源
    最近更新 更多