我無法讓scrapy從此div中返回文本。當它確實返回數據時,它比我想象的要多得多。無法讓Scrapy返回Div中的文本
目標HTML:
<div class="DivTimeSpan" title="Full Time">12:00 PM - 09:00 PM </div>
嘗試1:
def parse_schedule(self, response):
s_item = ScheduleItem()
for sel in response.xpath("//div[@class='DivTimeSpan']"):
s_item['schedule'] = sel.select('//text()').extract()
return s_item
返回:
爲 「\ r \ n \ r \ n」, 「\ r \ n」 個, 「\ r \ n \ r \ n \ r \ n var allowedUrls = []; \ r \ n allowedUrls.push(\」Login.net \「); \ r \ n allowedUrls.push(\」Login \「) ; \ r \ n allowedUrls.push(\「AccountLogin.net \」); \ r \ n allowedUrls.push(\「AccountLogin \」); \ r \ n allowed Urls.push(\「CreateAccount \」); \ r \ n allowedUrls.push(\「CreateAccount.net \」); \ r \ n allowedUrls.push(\「UpdateAccount \」); \ r \ n allowedUrls.push (\「UpdateAccount.net \」); \ r \ n allowedUrls.push(\「CreateResellersAccount \」); \ r \ n allowedUrls.push(\「CreateResellersAccount.net \」); \ r \ n allowedUrls.push( 「CreateQqestSAASAccount」); \ r \ n
「11:00 AM - 09:00 PM」,「12:00 PM - 09:00 PM」,「12:00 PM - 09:00 PM」,「 12:00 PM - 09:00 PM」,‘下午12:00 - 09:00 PM’
整個文件可能是成千上萬行的長,並且包含什麼樣子的文字從我指定的div外
我明白了// text()返回元素的文本及其chil德倫。我所針對的html元素沒有任何子元素,所以我認爲它只會返回div中的數據。
接下來我試着用「/ text()」。這是唯一的變化
嘗試2:
for sel in response.xpath("//div[@class='DivTimeSpan']"):
s_item['schedule'] = sel.select('/text()').extract()
return s_item
返回:
[{ 「時間表」:[]}]
所需的結果:
[{「schedule」:[「11:00 AM - 09:00 PM」,「12: 00 PM - 09:00 PM「,」12:00 PM - 09:00 PM「,」12:00 PM - 09:00 PM「,」12:00 PM - 09:00 PM「]}]
我刮的網址是在公司登錄後面,所以我不能給出實際的網址。
以利沙的帖子引導我在正確的方向,謝謝! :) 答案:
for sel in response.xpath("//div[@class='DivTimeSpan']"):
s_item['schedule'] = map(unicode.strip, sel.select('//div/text()').extract())
return s_item