我正在使用Scrapy抓取包含特定文章的网页。
我正在尝试使用类“return”获取存储在div中的信息。当我使用Scrapy Xpath或Css选择器时,div返回总是空的大问题。
我想提取的Div:
<div class="return">
<p><strong>Conditionnement : </strong></p>
<p class="one-product-detail">2 colis :<br>
L178xl106xH80 72kg<br>L178xl112xH80 60kg<br>
<span itemprop="weight" alt="3fin" class="hidden" hidden="">132kg</span></p>
</div>
我的蜘蛛代码:
import scrapy
from alinea.items import AlineaItem
class AlineaSpider(scrapy.Spider):
name = "alinea"
start_urls = [
"http://www.alinea.fr/",
]
def parse(self, response):
# ref = input("Enter Item Reference ?\n")
# 25321050
# link = "http://www.alinea.fr/alinea_fredhopper/catalogSearch_result/products/search/" + str(ref)
link = "http://www.alinea.fr/alinea_fredhopper/catalogSearch_result/products/search/" + str(25321050)
print(link)
return scrapy.Request(link,
callback=self.parse_page2)
def parse_page2(self, response):
self.logger.info("Visited %s", response.url)
for sel in response.xpath('//li[contains(@itemprop,"title")]/text()'):
print("**************")
print("Description")
print(sel.extract())
print("**************")
# print("------------------------------------------------------------------")
#
# for sel in response.xpath('//*[@class="delivery"]'):
#
# print("**************")
# print("Details")
# print(sel.extract())
# print("**************")
print("------------------------------------------------------------------")
for sel in response.css('[class="return"]'):
print("**************")
print("Details")
print(sel.extract())
print("**************")
我的终端日志:
2016-07-28 12:57:21 [alinea] INFO: Visited http://www.alinea.fr/orca-canape-angle-gauche-droit-convertible-gris.html
**************
Description
Orca - Canapé CONVERTIBLE d'angle gauche ou droit gris
**************
------------------------------------------------------------------
**************
Details
<div class="return">
</div>
**************
答案 0 :(得分:1)
您访问的page根本没有div
的内容。所以你应该得到你得到的东西。
如果您更改为其他网页,例如http://www.alinea.fr/orca-canape-angle-droit-gris-fonce.html,您会看到div
在那里而不是空。
来自shell的输出:scrapy shell 'http://www.alinea.fr/orca-canape-angle-droit-gris-fonce.html'
In [1]: response.xpath('//div[@class="return"]').extract()
Out[1]: [u'<div class="return">\n\n \n<p><strong>Conditionnement : </strong></p>\n<p class="one-product-detail">\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t2 colis :<br>\n\t\t\t\t\t\t\t\t\t L178xl106xH80\xa055kg<br>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t L178xl112xH80\xa053kg<br>\t\t\t\t\t\t<span itemprop="weight" alt="3fin" hidden class="hidden">108kg</span></p>\n \n</div>']
如果您需要文字,请使用//text()
,而/text()
仅在div
下直接为您提供文字,在您的情况下为空白。
In [2]: response.xpath('//div[@class="return"]/text()').extract()
Out[2]: [u'\n\n \n', u'\n', u'\n \n']
In [3]: [x.strip() for x in response.xpath('//div[@class="return"]//text()').extract()]
Out[3]:
[u'',
u'Conditionnement :',
u'',
u'2 colis :',
u'L178xl106xH80\xa055kg',
u'L178xl112xH80\xa053kg',
u'',
u'108kg',
u'']