मैंने एक वेबसाइट को दोबारा क्रॉल करने के लिए स्क्रैपी में एक स्क्रिप्ट लिखी है। लेकिन किसी कारणवश नहीं हो पा रहा है। मैंने उदात्त में xpaths का परीक्षण किया है और यह पूरी तरह से काम कर रहा है। इसलिए, इस समय मैं ठीक नहीं कर सकता कि मैंने क्या गलत किया है।
"items.py" में शामिल हैं:
import scrapy
class CraigpItem(scrapy.Item):
Name = scrapy.Field()
Grading = scrapy.Field()
Address = scrapy.Field()
Phone = scrapy.Field()
Website = scrapy.Field()
"craigsp.py" नाम की मकड़ी में शामिल हैं:
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
class CraigspSpider(CrawlSpider):
name = "craigsp"
allowed_domains = ["craigperler.com"]
start_urls = ['https://www.americangemsociety.org/en/find-a-jeweler']
rules=[Rule(LinkExtractor(restrict_xpaths='//area')),
Rule(LinkExtractor(restrict_xpaths='//a[@class="jeweler__link"]'),callback='parse_items')]
def parse_items(self, response):
page = response.xpath('//div[@class="page__content"]')
for titles in page:
AA= titles.xpath('.//h1[@class="page__heading"]/text()').extract()
BB= titles.xpath('.//p[@class="appraiser__grading"]/strong/text()').extract()
CC = titles.xpath('.//p[@class="appraiser__hours"]/text()').extract()
DD = titles.xpath('.//p[@class="appraiser__phone"]/text()').extract()
EE = titles.xpath('.//p[@class="appraiser__website"]/a[@class="appraiser__link"]/@href').extract()
yield {'Name':AA,'Grading':BB,'Address':CC,'Phone':DD,'Website':EE}
मैं जिस आदेश के साथ चल रहा हूं वह है:
scrapy crawl craigsp -o items.csv
आशा है कि कोई मुझे सही दिशा में ले जाएगा।
1 उत्तर
फ़िल्टर किए गए ऑफ़साइट अनुरोध
इस त्रुटि का अर्थ है कि एक url जो स्क्रैपी के लिए कतार में था, वह allowed_domains
सेटिंग पास नहीं करता है।
आपके पास:
allowed_domains = ["craigperler.com"]
और आपका स्पाइडर http://ww.americangemsociety.org क्रॉल करने का प्रयास कर रहा है। आपको या तो इसे allowed_domains
सूची में जोड़ना होगा या इस सेटिंग से पूरी तरह छुटकारा पाना होगा।
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।
.+\.com
सभी .com डोमेन को अनुमति देने के लिए)। इस मुद्दे पर मेरा उत्तर यहां देखें: stackoverflow.com/questions/39093211/…