2011-03-22 11 views
7

मैं केवल पाइथन स्कैरेपी का उपयोग करके शरीर से टेक्स्ट को स्क्रैप करने की कोशिश कर रहा हूं, लेकिन अभी तक कोई भाग्य नहीं है।स्केपर बॉडी टेक्स्ट केवल

कुछ विद्वानों की इच्छा रखने से मुझे <body> टैग से सभी पाठों को स्क्रैप करने में मदद मिल सकती है।

उत्तर

4

स्केपर एक HTML दस्तावेज़ के हिस्सों को निकालने के लिए XPath नोटेशन का उपयोग करता है। तो, क्या आपने निकालने के लिए /html/body पथ का उपयोग करने का प्रयास किया है? (यह मानते हुए कि यह <html> में घोंसला है)।

x.select("//body").extract() # extract body 

आप चयनकर्ताओं Scrapy here प्रदान करता है के बारे में अधिक जानकारी पा सकते हैं: यह //body चयनकर्ता का उपयोग करने के लिए और भी आसान हो सकता है।

+0

धन्यवाद एली, मुझे लगता है कि हिस्सा पता है। लेकिन मेरा सवाल एचटीएमएल के बजाय सादे पाठ प्राप्त करने से संबंधित था। क्या आपको पता है कि स्केपर में कोई रास्ता है? – mmrs151

+0

@ mmrs151: चयनकर्ता को '/ text()' संलग्न करने का प्रयास करें। –

+1

जोड़ना/पाठ() को शरीर का पाठ मिलेगा, // text() का उपयोग करके शरीर के सभी उप तत्वों का पाठ प्राप्त होगा। लेकिन उनमें से कुछ तत्वों में स्क्रिप्ट टैग जैसे अवांछित होंगे। – spazm

2

lynx -nolist -dump द्वारा उत्पादित आउटपुट प्राप्त करना अच्छा लगेगा, जो पृष्ठ को प्रस्तुत करता है और फिर दृश्यमान पाठ को डंप करता है। मैं अनुच्छेद तत्वों के सभी बच्चों के पाठ को निकालने के करीब मिल गया है।

मैंने //body//text() के साथ शुरू किया, जिसने शरीर के अंदर सभी पाठ तत्वों को खींच लिया, लेकिन इसमें स्क्रिप्ट तत्व शामिल थे। //body//p शरीर के अंदर सभी अनुच्छेद तत्व प्राप्त करता है, जिसमें अनगिनत पाठ के आस-पास के अनुच्छेद अनुच्छेद टैग शामिल हैं। //body//p/text() के साथ पाठ निकालने से उपटैग (जैसे बोल्ड, इटालिक, अवधि, div) से तत्वों को याद किया जाता है। //body//p//text() वांछित सामग्री प्राप्त करने के लिए प्रतीत होता है, जब तक पृष्ठ में अनुच्छेदों में एम्बेडेड स्क्रिप्ट टैग नहीं होते हैं।

XPath / में प्रत्यक्ष बच्चे का तात्पर्य है, जबकि // में सभी वंशज शामिल हैं।

% scrapy shell 
In[1]: fetch('http://stackoverflow.com/questions/5390133/scrapy-body-text-only') 
In[2]: hxs.select('//body//p//text()').extract() 

Out[2]: 
[u"I am trying to scrape the text only from body using python Scrapy, but haven't had any luck yet.", 
u'Wishing some scholars might be able to help me here scraping all the text from the ', 
u'&lt;body&gt;', 
u' tag.', 
u'Thank you in advance for your time.', 
u'Scrapy uses XPath notation to extract parts of a HTML document. So, have you tried just using the ', 
u'/html/body', 
u' path to extract ', 
u'&lt;body&gt;', 
u"? (assuming it's nested in ", 
u'&lt;html&gt;', 
u'). It might be even simpler to use the ', 
u'//body', 
u' selector:', 
u'You can find more information about the selectors Scrapy provides ', 
u'here', 

एक स्थान के साथ एक साथ तार में शामिल हों और आप एक बहुत अच्छी उत्पादन:

In [43]: ' '.join(hxs.select("//body//p//text()").extract()) 
Out[43]: u"I am trying to scrape the text only from body using python Scrapy, but haven't had any luck yet. Wishing some scholars might be able to help me here scraping all the text from the &lt;body&gt; tag. Thank you in advance for your time. Scrapy uses XPath notation to extract parts of a HTML document. So, have you tried just using the /html/body path to extract &lt;body&gt; ? (assuming it's nested in &lt;html&gt;). It might be even simpler to use the //body selector: You can find more information about the selectors Scrapy provides here . This is a collaboratively edited question and answer site for professional and enthusiast programmers . It's 100% free, no registration required. about \xbb \xa0\xa0\xa0 faq \xbb \r\n    tagged asked 1 year ago viewed 280 times active 1 year ago" 
संबंधित मुद्दे