0.
1.参考
表格标签
表格描述
定义表格的表头。
定义表格的行。
定义表格单元。
定义表格的页眉。
定义表格的主体。
定义表格的页脚。
定义用于表格列的属性。
表格元素定位
参看网页源代码并没有 thead 和 tbody。。。
List of text editors Name Creator First public release Latest stable version Latest Release Date Programming language Cost ( US$) Software license Open source Cli available Minimum installed size2.提取表格数据
表格标题可能出现超链接,导致标题被拆分,
也可能不带表格标题。。
Text editor support for remote file editing over表格内容换行
and
tag 规律
table
thead tr1
th
th
th
th
tbody tr2
td/th
td
tbody tr3
td/th
tbody tr3
td/th
2.1提取所有表格标题列表
filenames =[]for index, table in enumerate(response.xpath('//table')):
caption= table.xpath('string(./caption)').extract_first() #提取caption tag里面的所有text,包括子节点内的和文本子节点,这样也行 caption = ''.join(table.xpath('./caption//text()').extract())
filename = str(index+1)+'_'+caption if caption else str(index+1) #xpath 要用到 table 计数,从[1]开始
filenames.append(re.sub(r'[^\w\s()]','',filename)) #移除特殊符号
In [233]: filenames
Out[233]:
[u'1_List of text editors',
u'2_Text editor support for various operating systems',
u'3_Available languages for the UI',
u'4_Text editor support for common document interfaces',
u'5_Text editor support for basic editing features',
u'6_Text editor support for programming features (see source code editor)',
u'7_Text editor support for other programming features','8',
u'9_Text editor support for key bindings',
u'10_Text editor support for remote file editing over network protocols',
u'11_Text editor support for some of the most common character encodings',
u'12_Right to left (RTL) bidirectional (bidi) support',
u'13_Support for newline characters in line endings']
2.2每个表格分别写入csv文件
for index, filename inenumerate(filenames):printfilename
with open('%s.csv'%filename,'wb') as fp:
writer=csv.writer(fp)for tr in response.xpath('//table[%s]/tr'%(index+1)):
writer.writerow([i.xpath('string(.)').extract_first().replace(u'\xa0', u' ').strip().encode('utf-8','replace') for i in tr.xpath('./*')]) #xpath组合,限定 tag 范围,tr.xpath('./th | ./td')
代码处理 .replace(u'\xa0', u' ')
使用 'w' 写csv文件,会出现如下问题,使用'wb' 即可解决问题
所有表格写入同一excel文件的不同工作表 sheet,需要使用xlwt