我很难让screpy从这个div返回文本,当它确实返回数据时,它的返回量远远超过了我的预期。在
目标HTML:
<div class="DivTimeSpan" title="Full Time">12:00 PM - 09:00 PM </div>
尝试1:
^{pr2}$退货:
"\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 allowedUrls.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 PM - 09:00 PM"
整个文件可能有数千行长,包含的内容类似于我指定的div之外的文本
我理解了//text()返回元素及其子元素的文本。但是,我所针对的html元素没有任何子元素,所以我假设它只返回div中的数据
接下来,我尝试使用“/text()”。这是唯一的改变
尝试2:
for sel in response.xpath("//div[@class='DivTimeSpan']"):
s_item['schedule'] = sel.select('/text()').extract()
return s_item
退货:
[{"schedule": []}]
期望结果:
[{"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
第二次尝试更接近于提取值。但是,您需要从节点提取文本,而不是从文档根中提取文本:
如果文档包含更多标记(不是divs),您可以尝试:
^{pr2}$相关问题 更多 >
编程相关推荐