Python scrapy从表格列表中获取详细信息

我需要一个表中的ISBN号...我尝试了一些现在显示的示例,但无法获得ISBN。

我的想法是,在tr循环中运行所有tr,以获取每个td。 然后,如果我在一个td中找到“ ISBN”,则从中获取下一个td和.span文本,因为有数字。

for tr in response.css('.ry-product-details__fullscreen-scrollable table tr'):
        td = tr.css('::text')[0].extract().strip()
        print(td)
        if "ISBN" in td:
            isbn = tr.css('td .span::text')[0].extract().strip()
            print(isbn)

表格看起来像这样(图片)click here

表代码看起来像这样

<table class="table ry-table ry-content-page__table">
    <thead>
        <tr>
        <th colspan="2">Details</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Bluetooth</td>
            <td><span>Ja</span></td>
        </tr>
        <tr>
            <td>EAN / ISBN-13</td>
            <td><span>0888462149143,5055887319009,0888462149082</span></td>
        </tr>
        <tr>
            ..... some more here ...
        </tr>

所以我需要在找到ISBN的同一个tr中有此td跨度文本。 但还有一个问题是,if "ISBN" in td:似乎不起作用,原因是有时它后面有一个“-”。

tftp156656 回答:Python scrapy从表格列表中获取详细信息

   scrapy shell 
In [1]: body=''' <tr>
       ...:             <td>Bluetooth</td>
       ...:             <td><span>Ja</span></td>
       ...:         </tr>
       ...:         <tr>
       ...:             <td>EAN / ISBN-13</td>
       ...:             <td><span>0888462149143,5055887319009,08884
       ...: 62149082</span></td>
       ...:         </tr>'''
    In [2]: from scrapy import Selector

    In [3]: sel = Selector(text=body,type="html")
    In [4]: sel.xpath("//tr[contains(.,'ISBN')]/td[2]/span/text()").extract()
    Out[5]: ['0888462149143,0888462149082']
,

使用XPath:

response.xpath('//td[.="EAN / ISBN-13"]/following-sibling::td[1]/text()').get()
本文链接:https://www.f2er.com/3156447.html

大家都在问