任务:提取如下网页中Data中内容:
jQuery1123006065544693397551_1623470103055({"Message":"","Status":0,"Data":[{"TableName":"RptSumJGDYMap","TotalPage":1,"ConsumeMSecond":19,"SplitSymbol":"|","FieldName":"CompanyCode,CompanyName,OrgCode,OrgName,OrgSum,SCode,SName,NoticeDate,StartDate,EndDate,Place,Description,Orgtype,OrgtypeName,Personnel,Licostaff,Maincontent,ChangePercent,Close","Data":["80340500||80000222|华夏基金||300520|科大国创|2016-07-29|2016-07-26||公司会议室|特定对象调研|004001|基金管理公司|朱晋|董事会秘书 储士升,证券事务代表 杨涛||1.63|23.05","80340500||80000220|南方基金||300520|科大国创|2016-07-29|2016-07-26||公司会议室|特定对象调研|004001|基金管理公司|邹寅隆|董事会秘书 储士升,证券事务代表 杨涛||1.63|23.05","80340500||80050229|上投摩根||300520|科大国创|2016-07-29|2016-07-26||公司会议室|特定对象调研|004001|基金管理公司|厦金强|董事会秘书 储士升,证券事务代表 杨涛||1.63|23.05","80340500||80075936|中邮基金||300520|科大国创|2016-07-29|2016-07-26||公司会议室|特定对象调研|004001|基金管理公司|周楠|董事会秘书 储士升,证券事务代表 杨涛||1.63|23.05","80340500||10000018|中信证券||300520|科大国创|2016-07-29|2016-07-26||公司会议室|特定对象调研|005001|证券公司|杨泽原,刘雯蜀,承婧,王筱峻,杨鑫|董事会秘书 储士升,证券事务代表 杨涛||1.63|23.05"]}]})
问题:jQuery文档内容,无法直接转为json或用xpath进行处理。
方案:使用re库,通过re.compile构建表达式,re.findall匹配字段,再转为json格式进行处理。
1、导入相关库
import scrapy
import json
import re
2、在返回处理函数中使用正则表达式提取字段
def singlesurveyMem(self, response):
rs = response.text
getdata = re.compile(r'{"Message":"","Status":0,"Data":\[(.*?)\]}\)$')
rs_re = re.findall(getdata, rs)
data = json.loads(rs_re[0])
memlist = data['Data']
stringlist = memlist[0].split('|')
其中(.*?)为需提取的字段。
\为转义符