extract div tag entries that are part of a table using python scrapy
我试图用python scrapy在网页上提取一些数据。我不知道是否有足够的HTML/CSS格式,但似乎没有。我感兴趣的目标信息具有如下所示的模式。表包含一组我感兴趣提取的条目(name、year、int1、int2)。但是这些不是标准的td标记,而是DIV标记的一部分。下面是一个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <table width='100%'> <tr> <td width='50%'> Mr. Richard D. Hanson 1989 1 27</td><td width='50%'> Alison G. Mills, CPA 1989 8 12</td></tr><tr><td width='50%'> Mr. Timothy D. Harrell 1989 28 28</td><td width='50%'> Debora R. Mitchell, PhD 1989 20 21</td></tr><tr><td width='50%'> Mr. Tim J. Scoggins 1989 1 9 </td> </tr> </table> |
这是我到目前为止用废壳做的尝试
尝试1:
这是可行的,但是我需要将条目相互关联——即为下面访问的每个名称获取年份和int1和int2
1 2 | >>> response.xpath('//div[@style="width: 232px; float: left"]/text()').extract() [u'Mr. Richard D. Hanson', u'Alison G. Mills, CPA', u'Mr. Timothy D. Harrell', u'Debora R. Mitchell, PhD', u'Mr. Tim J. Scoggins'] |
尝试2:在这次尝试中,我希望对每个条目进行一次调用,然后迭代并将其存储在字典中。不幸的是,我不知道这里发生了什么
1 2 | >>> response.xpath('//table[@width="100%"]/tr/td[@width="50%"]/div[@style="width: 10px; float: left"]/text()').extract() [u'\xa0', u'\xa0', u'\xa0', u'\xa0', u'\xa0'] |
有什么主意吗?
您可以获取每个内部
1 2 3 4 5 6 7 8 | In [1]: data = response.xpath("//table/tr/td/div/text()").extract() In [2]: [data[x+1:x+5] for x in xrange(0, len(data), 5)] Out[2]: [[u'Mr. Richard D. Hanson', u'1989', u'1', u'27'], [u'Alison G. Mills, CPA', u'1989', u'8', u'12'], [u'Mr. Timothy D. Harrell', u'1989', u'28', u'28'], [u'Debora R. Mitchell, PhD', u'1989', u'20', u'21'], [u'Mr. Tim J. Scoggins', u'1989', u'1', u'9']] |