मैं इस प्रश्न के लिए पायथन और स्केपर का उपयोग कर रहा हूं।मैं पृष्ठों के भीतर क्रॉल करने के लिए स्केपर का उपयोग कैसे करूं?
मैं वेबपेज एक, जो वेबपेजों बी 1 के लिए लिंक, बी 2, बी 3 की एक सूची है क्रॉल करने का प्रयास कर रहा हूँ, ... प्रत्येक बी पेज, C1, C2 एक और पृष्ठ पर एक लिंक होता है सी 3, ..., जिसमें एक छवि है।
तो, Scrapy का उपयोग कर, छद्म कोड में विचार है:
links = getlinks(A)
for link in links:
B = getpage(link)
C = getpage(B)
image = getimage(C)
हालांकि, जब Scrapy में एक से अधिक पृष्ठ पार्स करने का प्रयास मैं एक समस्या में चल रहा हूँ। यहां मेरा कोड है:
def parse(self, response):
hxs = HtmlXPathSelector(response)
links = hxs.select('...')
items = []
for link in links:
item = CustomItem()
item['name'] = link.select('...')
# TODO: Somehow I need to go two pages deep and extract an image.
item['image'] = ....
मैं यह करने के बारे में कैसे जाऊं?
(नोट: मेरा प्रश्न Using multiple spiders at in the project in Scrapy के समान है, लेकिन मैं अनिश्चित हूं कैसे Scrapy के अनुरोध वस्तुओं से "वापसी" मान।)
धन्यवाद, यह कमाल है। अगर मैं 'पर्स' विधि में 'कस्टमइटम' बनाना चाहता हूं, तो क्या मैं मेटा प्रॉपर्टी का उपयोग करके इसे पास कर दूंगा? – sdasdadas
इसके अलावा, मैं वस्तुओं की एक सूची ('आइटम = []') वापस करना चाहता हूं। मैं उपरोक्त का उपयोग कैसे करूं और फिर, पूरा होने पर, आइटम को सूची में जोड़ूं? – sdasdadas
मकड़ी केवल एक पृष्ठ पर जाना है, डेटा निकालना और वापस लौटना है (अंतिम 'उपज वस्तु')। डेटा एकत्र करने के लिए, सभी वस्तुओं को एक सूची में डालने की तरह, आपको 'पाइपलाइनों' मॉड्यूल में एक फ़ंक्शन बनाना होगा (यह केवल एक सम्मेलन है)। [यह उदाहरण पाइपलाइन] (https://github.com/bcap/wikipedia-music/blob/master/crawler/crawler/pipelines.py) –