The script (नीचे) this ट्यूटोरियल में दो start_urls
शामिल हैं।स्केपर start_urls
from scrapy.spider import Spider
from scrapy.selector import Selector
from dirbot.items import Website
class DmozSpider(Spider):
name = "dmoz"
allowed_domains = ["dmoz.org"]
start_urls = [
"http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
"http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/",
]
def parse(self, response):
"""
The lines below is a spider contract. For more info see:
http://doc.scrapy.org/en/latest/topics/contracts.html
@url http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/
@scrapes name
"""
sel = Selector(response)
sites = sel.xpath('//ul[@class="directory-url"]/li')
items = []
for site in sites:
item = Website()
item['name'] = site.xpath('a/text()').extract()
item['url'] = site.xpath('a/@href').extract()
item['description'] = site.xpath('text()').re('-\s[^\n]*\\r')
items.append(item)
return items
लेकिन यह केवल इन 2 वेब पृष्ठों को क्यों स्क्रैप करता है? मुझे allowed_domains = ["dmoz.org"]
दिखाई देता है लेकिन इन दो पृष्ठों में अन्य पृष्ठों के लिंक भी शामिल हैं जो dmoz.org
डोमेन के भीतर हैं! यह उन्हें भी खराब क्यों नहीं करता है?
http://doc.scrapy.org/en/latest/topics/spiders.html लेकिन नियम क्रॉलस्पाइडर्स के लिए हैं! मैं बेसस्पीडर से उत्तराधिकारी हूं! – DrStrangeLove
बेसस्पीडर केवल प्रारंभ किए गए यूआरएल पर जाता है, इसलिए मुझे लगता है कि मेरा मूल जवाब थोड़ा भ्रामक है। Http://doc.scrapy.org/en/latest/topics/spiders.html#basespider – Glenn
देखें लेकिन यह start_urls के बारे में बताता है: बाद के URL प्रारंभिक URL में मौजूद डेटा से लगातार उत्पन्न होंगे। यह उन (बाद में) यूआरएल क्यों नहीं छीनता है ?? (बेशक, अगर वे यूआरएल dmoz.org डोमेन के भीतर हैं) – DrStrangeLove