为什么使用scrapy时有些第三方库车险无法找到第三方

1572人阅读
技术文章(116)
资源共享(50)
python学习(9)
学习笔记(16)
Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。
//安装教程很简单,我采用PIP命令安装
pip install scrapy
或者直接下载对应系统平台和python对应版本,安装即可(不会的自行百度)
我在windows 平台运行提示缺少import win32api库。记得自己没有下载这个安装。
Python for Windows Extensions
本次测试抓取python官方第三方库插件列表,其它网站类似,关键在于自行分析匹配规则。
//代码不多就这几十行
import scrapy
class PypiPythonSpider(scrapy.Spider):
name = "python-demo"
allowed_domains = ["python.org"]
start_urls = ["https://pypi.python.org/pypi"]
def parse(self, response):
for sel in response.xpath('//tr[@class]').extract():
#sel.xpath('//td//@href').extract()
print'item \n'
yield {"info1": sel}
抓取格式如这样列表
https://pypi.python.org/pypi
&tr class="even"&
&td style="white-space: text-align:"&&/td&
&td&&a href="/pypi/django-rescuests/0.2.3"&django-rescuests\xa00.2.3&/a&&/td&
&td&A framework sending, tracking and retrying REST requests in Django.&/td&
匹配规则,采用xpath样式选择器帅选。
也可以支持文件导出,参数比较多,自行学习。
scrapy runspideer main.py --outfile file
包括详细输出日志和记录
文章:87篇
阅读:359517如何在Windows下安装Scrapya year ago(4)pip 安装Scrapypip
install scrapy
写一个简单的scrapy语句,证明爬虫可以正常运行:38收藏分享举报文章被以下专栏收录有趣的爬虫实战分析及源码分享{&debug&:false,&apiRoot&:&&,&paySDK&:&https:\u002F\u002Fpay.zhihu.com\u002Fapi\u002Fjs&,&wechatConfigAPI&:&\u002Fapi\u002Fwechat\u002Fjssdkconfig&,&name&:&production&,&instance&:&column&,&tokens&:{&X-XSRF-TOKEN&:null,&X-UDID&:null,&Authorization&:&oauth c3cef7c66aa9e6a1e3160e20&}}{&database&:{&Post&:{&&:{&isPending&:false,&contributes&:[{&sourceColumn&:{&lastUpdated&:,&description&:&微信公众号:暂未开通&,&permission&:&COLUMN_PUBLIC&,&memberId&:1677782,&contributePermission&:&COLUMN_PUBLIC&,&translatedCommentPermission&:&all&,&canManage&:true,&intro&:&有趣的爬虫实战分析及源码分享&,&urlToken&:&pythoncrawl&,&id&:22457,&imagePath&:&v2-de1203acf0c36cdfcb03f71fd7ac4d09.jpg&,&slug&:&pythoncrawl&,&applyReason&:&0&,&name&:&Python爬虫实战&,&title&:&Python爬虫实战&,&url&:&https:\u002F\u002Fzhuanlan.zhihu.com\u002Fpythoncrawl&,&commentPermission&:&COLUMN_ALL_CAN_COMMENT&,&canPost&:true,&created&:,&state&:&COLUMN_NORMAL&,&followers&:7189,&avatar&:{&id&:&v2-de1203acf0c36cdfcb03f71fd7ac4d09&,&template&:&https:\u002F\u002Fpic2.zhimg.com\u002F{id}_{size}.jpg&},&activateAuthorRequested&:false,&following&:false,&imageUrl&:&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-de1203acf0c36cdfcb03f71fd7ac4d09_l.jpg&,&articlesCount&:25},&state&:&accepted&,&targetPost&:{&titleImage&:&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-9a5e1e838fd30e25df8e7dec_r.jpg&,&lastUpdated&:,&imagePath&:&v2-9a5e1e838fd30e25df8e7dec.png&,&permission&:&ARTICLE_PUBLIC&,&topics&:[872],&summary&:&上篇文章中,有读者问到了如何在windows下安装scrapy。由于scrapy依赖非常多的第三方库,所以这篇介绍windows下安装scrapy的步骤。目前scrapy在windows下已支持Python3. \u003Cb\u003E(1)安装Visual C++ Build Tools\u003C\u002Fb\u003E由于Scrapy的依赖库文件中,pywin32和Twisted的底层…&,&copyPermission&:&ARTICLE_COPYABLE&,&translatedCommentPermission&:&all&,&likes&:0,&origAuthorId&:0,&publishedTime&:&T00:50:13+08:00&,&sourceUrl&:&&,&urlToken&:,&id&:2179314,&withContent&:false,&slug&:,&bigTitleImage&:false,&title&:&如何在Windows下安装Scrapy&,&url&:&\u002Fp\u002F&,&commentPermission&:&ARTICLE_ALL_CAN_COMMENT&,&snapshotUrl&:&&,&created&:,&comments&:0,&columnId&:22457,&content&:&&,&parentId&:0,&state&:&ARTICLE_PUBLISHED&,&imageUrl&:&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-9a5e1e838fd30e25df8e7dec_r.jpg&,&author&:{&bio&:&&,&isFollowing&:false,&hash&:&5e1d5af31&,&uid&:28,&isOrg&:false,&slug&:&chao-ji-sai-ya-ren&,&isFollowed&:false,&description&:&要成为海贼王的男人&,&name&:&超人&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fchao-ji-sai-ya-ren&,&avatar&:{&id&:&v2-66e77ba4cd55b9083bff41d87d5f829b&,&template&:&https:\u002F\u002Fpic3.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},&memberId&:1677782,&excerptTitle&:&&,&voteType&:&ARTICLE_VOTE_CLEAR&},&id&:537976}],&title&:&如何在Windows下安装Scrapy&,&author&:&chao-ji-sai-ya-ren&,&content&:&上篇文章中,有读者问到了如何在windows下安装scrapy。由于scrapy依赖非常多的第三方库,所以这篇介绍windows下安装scrapy的步骤。\u003Cp\u003E目前scrapy在windows下已支持Python3.\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E(1)安装Visual C++ Build Tools\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E由于Scrapy的依赖库文件中,pywin32和Twisted的底层是基于C语言开发的,因此需要安装C语言的编译环境。对于Python3.5来说,可以通过安装Visual C++ Build Tools来安装这个环境。Visual C++ Build Tools这个工具是微软开发的,下载地址为:\u003Ca href=\&http:\u002F\u002Flink.zhihu.com\u002F?target=http%3A\u002F\u002Flandinghub.visualstudio.com\u002Fvisual-cpp-build-tools\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003EDownload the Visual C++ Build Tools (standalone C++ compiler, libraries and tools)\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-a1fd2ee5bd7282_b.jpg\& data-rawwidth=\&917\& data-rawheight=\&1284\& class=\&origin_image zh-lightbox-thumb\& width=\&917\& data-original=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-a1fd2ee5bd7282_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='917'%20height='1284'&&\u002Fsvg&\& data-rawwidth=\&917\& data-rawheight=\&1284\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&917\& data-original=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-a1fd2ee5bd7282_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-a1fd2ee5bd7282_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E点击【安装】按钮进行安装,这个安装器会自动下载所需文件。安装时间一般在45~60分钟左右。可能有些机器在安装的过程中,出现下图所示的界面:\u003C\u002Fp\u003E\u003Cp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-714caadab149bb14f19498c_b.jpg\& data-rawwidth=\&460\& data-rawheight=\&644\& class=\&origin_image zh-lightbox-thumb\& width=\&460\& data-original=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-714caadab149bb14f19498c_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='460'%20height='644'&&\u002Fsvg&\& data-rawwidth=\&460\& data-rawheight=\&644\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&460\& data-original=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-714caadab149bb14f19498c_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-714caadab149bb14f19498c_b.jpg\&\u003E\u003C\u002Ffigure\u003E这是因为系统没有安装.Net Framework或者安装的版本过低。下载并安装一个4.5.1或以上版本的.Net Framework即可。这里给出.Net Framework 4.5.2的微软官方下载地址:\u003Ca href=\&http:\u002F\u002Flink.zhihu.com\u002F?target=https%3A\u002F\u002Fwww.microsoft.com\u002Fen-us\u002Fdownload\u002Fdetails.aspx%3Fid%3D42643\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003EDownload Microsoft .NET Framework 4.5.2 (Web Installer) for Windows Vista SP2, Windows 7 SP1, Windows 8, Windows 8.1, Windows Server 2008 SP2 Windows Server 2008 R2 SP1, Windows Server 2012 and Windows Server 2012 R2 from Official Microsoft Download Center\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Cbr\u003E\u003Cp\u003E安装好.Net Framework以后,Microsoft Visual C++ Build Tools应该就可以正常安装了。\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E(2)安装pywin32\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E在Windows系统里面,有两个第三方库不能使用常规的方法安装。第一个是lxml,第二个是pywin32,pywin32和lxml一样,不建议使用pip来安装,因为十个人里面,至少有九个人都会安装出错,并且pywin32也不能使用安装lxml的方式来安装。\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003Epywin32 必需使用exe安装包来进行安装,下载地址为:\u003Ca href=\&http:\u002F\u002Flink.zhihu.com\u002F?target=https%3A\u002F\u002Fsourceforge.net\u002Fprojects\u002Fpywin32\u002Ffiles\u002Fpywin32\u002FBuild%2F\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003EPython for Windows Extensions\u003C\u002Fa\u003E\u003Cbr\u003E根据电脑Python版本和位数下载并安装最新版的pywin32,它会自动寻找Python的安装路径,所以不需要做任何修改,一直单击【下一步】即可。下图是Python 3.5版本的pywin32安装过程的截图:\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-f39bfbd66f3ea03294fda1b_b.jpg\& data-rawwidth=\&600\& data-rawheight=\&337\& class=\&origin_image zh-lightbox-thumb\& width=\&600\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-f39bfbd66f3ea03294fda1b_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='600'%20height='337'&&\u002Fsvg&\& data-rawwidth=\&600\& data-rawheight=\&337\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&600\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-f39bfbd66f3ea03294fda1b_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-f39bfbd66f3ea03294fda1b_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cb\u003E(3)安装Twisted\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003EScrapy需要依赖Twisted。Twisted是Python下面一个非常重要的基于事件驱动的IO引擎。Twisted的安装依赖于pywin32和前面的Visual C++ Build Tools,所以必需先安装完成这两个东西以后才能安装Twisted。\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Epip
install twisted\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E\u003Cb\u003E(4)pip 安装Scrapy\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Epip
install scrapy\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E写一个简单的scrapy语句,证明爬虫可以正常运行:\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-5ccadf5fd059_b.jpg\& data-rawwidth=\&1468\& data-rawheight=\&951\& class=\&origin_image zh-lightbox-thumb\& width=\&1468\& data-original=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-5ccadf5fd059_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='1468'%20height='951'&&\u002Fsvg&\& data-rawwidth=\&1468\& data-rawheight=\&951\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&1468\& data-original=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-5ccadf5fd059_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-5ccadf5fd059_b.jpg\&\u003E\u003C\u002Ffigure\u003E&,&updated&:new Date(&T16:50:13.000Z&),&canComment&:false,&commentPermission&:&anyone&,&commentCount&:17,&collapsedCount&:0,&likeCount&:38,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&titleImage&:&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-9a5e1e838fd30e25df8e7dec_r.jpg&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&reviewers&:[],&topics&:[{&url&:&https:\u002F\u002Fwww.zhihu.com\u002Ftopic\u002F&,&id&:&&,&name&:&Python&}],&adminClosedComment&:false,&titleImageSize&:{&width&:688,&height&:502},&href&:&\u002Fapi\u002Fposts\u002F&,&excerptTitle&:&&,&column&:{&slug&:&pythoncrawl&,&name&:&Python爬虫实战&},&tipjarState&:&inactivated&,&annotationAction&:[],&sourceUrl&:&&,&pageCommentsCount&:17,&hasPublishingDraft&:false,&snapshotUrl&:&&,&publishedTime&:&T00:50:13+08:00&,&url&:&\u002Fp\u002F&,&lastestLikers&:[{&bio&:&伪美工 \u002F 伪前端 \u002F 伪PHPer \u002F 伪全栈 \u002F 伪IT从业人员&,&isFollowing&:false,&hash&:&d0ebb67dab86a0a7c19afcab&,&uid&:56,&isOrg&:false,&slug&:&ankyliu&,&isFollowed&:false,&description&:&&,&name&:&ankyliu&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fankyliu&,&avatar&:{&id&:&a58970d3a&,&template&:&https:\u002F\u002Fpic1.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&想成为一颗稍厉害的人&,&isFollowing&:false,&hash&:&4d6c24f50c21883ade924bed&,&uid&:472600,&isOrg&:false,&slug&:&han-feng-99-49&,&isFollowed&:false,&description&:&别人总说在
知乎认真就输了\n但在这里我确实遇见了更大的世界\n把知乎当成百科
多看少写\n理科生矫情到想当文人\n幻想成为大V(滑稽脸)\n太容易的路\n可能根本不能带你去任何地方&,&name&:&鱼丸&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fhan-feng-99-49&,&avatar&:{&id&:&v2-e57da550e7ed7&,&template&:&https:\u002F\u002Fpic1.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:null,&isFollowing&:false,&hash&:&62bfb50cce44b6b0d4a211d&,&uid&:853100,&isOrg&:false,&slug&:&hao-ma-hao-de-24&,&isFollowed&:false,&description&:&码字太累,还是睡觉吧&,&name&:&好吗好的&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fhao-ma-hao-de-24&,&avatar&:{&id&:&v2-dbc028d81007ada88f0d04&,&template&:&https:\u002F\u002Fpic3.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&垃圾烦不烦&,&isFollowing&:false,&hash&:&1f957feb86dccfb3cd08d33a&,&uid&:768000,&isOrg&:false,&slug&:&tian-ji-jie-79&,&isFollowed&:false,&description&:&&,&name&:&小四波&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Ftian-ji-jie-79&,&avatar&:{&id&:&v2-2f2ddd02ffa9&,&template&:&https:\u002F\u002Fpic1.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&克莱登大学 在读&,&isFollowing&:false,&hash&:&0b7ada132e5b0e8540031ecf1e29b399&,&uid&:794600,&isOrg&:false,&slug&:&loner-76&,&isFollowed&:false,&description&:&&,&name&:&Loner&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Floner-76&,&avatar&:{&id&:&v2-84d79ac21e72d20da820e7&,&template&:&https:\u002F\u002Fpic1.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false}],&summary&:&\u003Cimg src=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-a1fd2ee5bd.jpg\& data-rawwidth=\&917\& data-rawheight=\&1284\& class=\&origin_image inline-img zh-lightbox-thumb\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-a1fd2ee5bd7282_r.jpg\&\u003E上篇文章中,有读者问到了如何在windows下安装scrapy。由于scrapy依赖非常多的第三方库,所以这篇介绍windows下安装scrapy的步骤。目前scrapy在windows下已支持Python3. \u003Cb\u003E(1)安装Visual C++ Build Tools\u003C\u002Fb\u003E由于Scrapy的依赖库文件中,pywin32和Twisted的底层…&,&reviewingCommentsCount&:0,&meta&:{&previous&:{&isTitleImageFullScreen&:false,&rating&:&none&,&titleImage&:&https:\u002F\u002Fpic2.zhimg.com\u002F50\u002Fv2-cde7fb8e3e67f7851084_xl.jpg&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&topics&:[{&url&:&https:\u002F\u002Fwww.zhihu.com\u002Ftopic\u002F&,&id&:&&,&name&:&爬虫 (计算机网络)&},{&url&:&https:\u002F\u002Fwww.zhihu.com\u002Ftopic\u002F&,&id&:&&,&name&:&Python&}],&adminClosedComment&:false,&href&:&\u002Fapi\u002Fposts\u002F&,&excerptTitle&:&&,&author&:{&bio&:&&,&isFollowing&:false,&hash&:&5e1d5af31&,&uid&:28,&isOrg&:false,&slug&:&chao-ji-sai-ya-ren&,&isFollowed&:false,&description&:&要成为海贼王的男人&,&name&:&超人&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fchao-ji-sai-ya-ren&,&avatar&:{&id&:&v2-66e77ba4cd55b9083bff41d87d5f829b&,&template&:&https:\u002F\u002Fpic3.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},&column&:{&slug&:&pythoncrawl&,&name&:&Python爬虫实战&},&content&:&今天主要分享一下使用Scrapy框架抓取当当网的图书数据。\u003Cp\u003E\u003Cb\u003E前言:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003Escrapy框架自带twisted线程池,默认10个线程,在爬虫这种IO密集型任务中可充分利用请求返回的等待时间。本次爬虫单机运行,2小时抓取完82万条图书信息。\u003C\u002Fp\u003E\u003Cp\u003EGithub地址:\u003Ca href=\&https:\u002F\u002Flink.zhihu.com\u002F?target=https%3A\u002F\u002Fgithub.com\u002FHunterChao\u002FDangdang\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003E点这里\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Ca href=\&https:\u002F\u002Flink.zhihu.com\u002F?target=https%3A\u002F\u002Fpan.baidu.com\u002Fs\u002F1nuL7k0p\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003E当当图书数据\u003C\u002Fa\u003E
密码:dt1q\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E文章目录结构:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E在Windows命令行下进入当前文件目录输入:tree \u002Ff
& tree.txt
命令,出现当前文件的目录\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003EC:.\n│
run.py\n│
scrapy.cfg\n│
\n└─dangdang\n
items.py\n
pipelines.py\n
settings.py\n
__init__.py\n
└─spiders\n
dangdang.py\n
__init__.py\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E想必大家对Scrapy框架中各模块的用途已经比较了解了,我这里先做下简要介绍,下面进行详细展开。run.py:设置在pycharm控制台运行程序,items.py:定义抓取的数据字段包括哪些, pipelines.py :将抓取到的数据持久化到本地, settings.py:设置运行参数,如数据库配置、时间间隔、消息队列 , dangdang.py:抓取数据的核心程序,包括解析页面,匹配字段,异常处理。下面我结合程序,进行详细说明。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E运行管理:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003Erun.py\u003C\u002Fb\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-python\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E\u003Cspan class=\&kn\&\u003Efrom\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\u003Escrapy\u003C\u002Fspan\u003E \u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ecmdline\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003Ecmdline\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eexecute\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&scrapy crawl dangdangspider\&\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Esplit\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E())\u003C\u002Fspan\u003E\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E一般我们通过cmd进入当前文件路径的方式运行程序,为更方便我们调试程序,这里我们可以通过引入cmdline的方式,直接运行此文件可在pycharm控制台下查看程序运行效果。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003Esettings.py\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-python\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E\u003Cspan class=\&c1\&\u003E# -*- coding: utf-8 -*-\u003C\u002Fspan\u003E\n\n\u003Cspan class=\&c1\&\u003E# Scrapy settings for dangdang project\u003C\u002Fspan\u003E\n\n\u003Cspan class=\&n\&\u003EBOT_NAME\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003E'dangdang'\u003C\u002Fspan\u003E\n\n\u003Cspan class=\&n\&\u003ESPIDER_MODULES\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'dangdang.spiders'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E]\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003ENEWSPIDER_MODULE\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003E'dangdang.spiders'\u003C\u002Fspan\u003E\n\n\u003Cspan class=\&c1\&\u003E# Obey robots.txt rules\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003EROBOTSTXT_OBEY\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&bp\&\u003EFalse\u003C\u002Fspan\u003E\n\n\u003Cspan class=\&n\&\u003EDOWNLOAD_DELAY\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&mi\&\u003E1\u003C\u002Fspan\u003E\n\n\u003Cspan class=\&n\&\u003ESCHEDULER\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s2\&\u003E\&scrapy_redis.scheduler.Scheduler\&\u003C\u002Fspan\u003E
\u003Cspan class=\&c1\&\u003E#调度\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003EDUPEFILTER_CLASS\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s2\&\u003E\&scrapy_redis.dupefilter.RFPDupeFilter\&\u003C\u002Fspan\u003E
\u003Cspan class=\&c1\&\u003E#去重\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003ESCHEDULER_PERSIST\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&bp\&\u003ETrue\u003C\u002Fspan\u003E
\u003Cspan class=\&c1\&\u003E#不清理Redis队列\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003ESCHEDULER_QUEUE_CLASS\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s2\&\u003E\&scrapy_redis.queue.SpiderQueue\&\u003C\u002Fspan\u003E
\u003Cspan class=\&c1\&\u003E#队列\u003C\u002Fspan\u003E\n\n\u003Cspan class=\&n\&\u003EITEM_PIPELINES\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&p\&\u003E{\u003C\u002Fspan\u003E\n
\u003Cspan class=\&s1\&\u003E'dangdang.pipelines.DangdangPipeline'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E \u003Cspan class=\&mi\&\u003E300\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\n\u003Cspan class=\&p\&\u003E}\u003C\u002Fspan\u003E\n\n\u003Cspan class=\&n\&\u003EMONGODB_HOST\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003E'127.0.0.1'\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003EMONGODB_PORT\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&mi\&\u003E2C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003EMONGODB_DBNAME\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s2\&\u003E\&dangdang\&\u003C\u002Fspan\u003E\n\u003Cspan class=\&n\&\u003EMONGODB_DOCNAME\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s2\&\u003E\&saveinto_2\&\u003C\u002Fspan\u003E\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003Esettings中需要设置一些程序中运行的关键配置信息:\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003EDOWNLOAD_DELAY:\u003C\u002Fi\u003E设置爬取的延时等待时间,这里设置1s\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003ESCHEDULER:\u003C\u002Fi\u003Escrapy中的调度器配置\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003EDUPEFILTER_CLASS:\u003C\u002Fi\u003E对爬取的链接去重,当发现有重复链接时对第二个链接不再爬取\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003ESCHEDULER_PERSIST:\u003C\u002Fi\u003E如果这一项设为True,那么在Redis中的URL队列不会被清理掉,但是在分布式爬虫共享URL时,要防止重复爬取。如果设为False,那么每一次读取URL后都会将其删掉,但弊端是爬虫暂停后重新启动,他会重新开始爬取。\u003C\u002Fp\u003E\u003Cp\u003E\u003Ci\u003ESCHEDULER_QUEUE_CLASS:\u003C\u002Fi\u003E爬虫的请求调度算法,这里有三种可供选择\u003C\u002Fp\u003E\u003Col\u003E\u003Cli\u003Escrapy_redis.queue.SpiderQueue:队列。先入先出队列,先放入Redis的请求优先爬取;\u003Cbr\u003E\u003C\u002Fli\u003E\u003Cli\u003Escrapy_redis.queue.SpiderStack:栈。后放入Redis的请求会优先爬取;\u003Cbr\u003E\u003C\u002Fli\u003E\u003Cli\u003Escrapy_redis.queue.SpiderPriorityQueue:优先级队列。根据优先级算法计算哪个先爬哪个后爬,比较麻烦\u003Cbr\u003E\u003C\u002Fli\u003E\u003C\u002Fol\u003E\u003Cbr\u003E\u003Cp\u003E下面的一些是对mongodb的配置,默认主机127.0.0.1,端口27017,数据库名称设为dangdang,表名称设为saveinto_2。\u003C\u002Fp\u003E\u003Cp\u003ERedis的信息不配置的话,默认在本地运行\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E下载和存储管理:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003Eitems.py\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-python\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E\u003Cspan class=\&c1\&\u003E# -*- coding: utf-8 -*-\u003C\u002Fspan\u003E\n\n\u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\u003Escrapy\u003C\u002Fspan\u003E\n\n\u003Cspan class=\&k\&\u003Eclass\u003C\u002Fspan\u003E \u003Cspan class=\&nc\&\u003EDangdangItem\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Escrapy\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EItem\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E):\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003E_id\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Escrapy\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EField\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Etitle\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Escrapy\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EField\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Ecomments\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Escrapy\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EField\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Etime\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Escrapy\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EField\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Epress\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Escrapy\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EField\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E
\u003Cspan class=\&c1\&\u003E#出版社\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Eprice\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Escrapy\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EField\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Ediscount\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Escrapy\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EField\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Ecategory1\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Escrapy\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EField\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E
\u003Cspan class=\&c1\&\u003E# 种类(小)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Ecategory2\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Escrapy\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EField\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E
\u003Cspan class=\&c1\&\u003E# 种类(大)\u003C\u002Fspan\u003E\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E我们需要抓取的字段包括:书名、评论数量、出版时间、出版社、价格、折扣、图书归属的大种类、图书归属的小种类(大种类如:童书,小种类如:中国儿童文学 \u002F 科普 \u002F 百科 \u002F 3~6岁)\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003Epipelines.py\u003C\u002Fb\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E# -*- coding: utf-8 -*-\nimport pymongo\nfrom scrapy.conf import settings\nfrom .items import DangdangItem\n\nclass DangdangPipeline(object):\n
def __init__(self):\n
host = settings['MONGODB_HOST']\n
port = settings['MONGODB_PORT']\n
db_name = settings['MONGODB_DBNAME']\n
client = pymongo.MongoClient(host=host,port=port)\n
tdb = client[db_name]\n
self.post = tdb[settings['MONGODB_DOCNAME']]\n\n
def process_item(self, item, spider):\n
'''先判断itme类型,在放入相应数据库'''\n
if isinstance(item,DangdangItem):\n
book_info = dict(item)
if self.post.insert(book_info):\n
except Exception:\n
return item\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E这里我们在__init__函数中首先初始化连接到mongodb数据库,关于mongodb的配置信息见上面的setting.py介绍。接下来在process_item函数中通过 isinstance 判断传入的item类型,然后持久化到对应的数据库。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003Espider抓取程序:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E终于写到抓取的关键环节了。在贴上代码之前,先对抓取的页面和链接做一个分析:\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cimg src=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-877d1e92404afcb13b538_b.jpg\& data-rawwidth=\&433\& data-rawheight=\&777\& class=\&origin_image zh-lightbox-thumb\& width=\&433\& data-original=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-877d1e92404afcb13b538_r.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-text\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003Ehttp:\u002F\u002Fcategory.dangdang.com\u002Fpg4-cp01.25.17.00.00.00.html\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E这个是当当网图书的链接,经过分析发现:大种类的id号对应 cp01.25
中的25,小种类对应id号中的第三个 17,pg4代表大种类 —&小种类下图书的第17页信息。\u003C\u002Fp\u003E\u003Cp\u003E为了在抓取图书信息的同时找到这本图书属于哪一大种类下的小种类的归类信息,我们需要分三步走,第一步:大种类划分,在首页找到图书各大种类名称和对应的id号;第二步,根据大种类id号生成的链接,找到每个大种类下的二级子种类名称,及对应的id号;第三步,在大种类 —&小种类的归类下抓取每本图书信息。\u003C\u002Fp\u003E\u003Cp\u003E分步骤介绍下:\u003C\u002Fp\u003E\u003Cp\u003E1、我们继承RedisSpider作为父类,start_urls作为初始链接,用于请求首页图书数据\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-python\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E\u003Cspan class=\&c1\&\u003E# -*- coding: utf-8 -*-\u003C\u002Fspan\u003E\n\u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\u003Escrapy\u003C\u002Fspan\u003E\n\u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\u003Erequests\u003C\u002Fspan\u003E\n\u003Cspan class=\&kn\&\u003Efrom\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\u003Escrapy\u003C\u002Fspan\u003E \u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003ESelector\u003C\u002Fspan\u003E\n\u003Cspan class=\&kn\&\u003Efrom\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\u003Elxml\u003C\u002Fspan\u003E \u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eetree\u003C\u002Fspan\u003E\n\u003Cspan class=\&kn\&\u003Efrom\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\u003E..items\u003C\u002Fspan\u003E \u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003EDangdangItem\u003C\u002Fspan\u003E\n\u003Cspan class=\&kn\&\u003Efrom\u003C\u002Fspan\u003E \u003Cspan class=\&nn\&\u003Escrapy_redis.spiders\u003C\u002Fspan\u003E \u003Cspan class=\&kn\&\u003Eimport\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003ERedisSpider\u003C\u002Fspan\u003E\n\n\u003Cspan class=\&k\&\u003Eclass\u003C\u002Fspan\u003E \u003Cspan class=\&nc\&\u003EDangdangSpider\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003ERedisSpider\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E):\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Ename\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003E'dangdangspider'\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Eredis_key\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003E'dangdangspider:urls'\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Eallowed_domains\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&dangdang.com\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E]\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Estart_urls\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003E'http:\u002F\u002Fcategory.dangdang.com\u002Fcp01.00.00.00.00.00.html'\u003C\u002Fspan\u003E\n\n
\u003Cspan class=\&k\&\u003Edef\u003C\u002Fspan\u003E \u003Cspan class=\&nf\&\u003Estart_requests\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&bp\&\u003Eself\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E):\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Euser_agent\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003E'Mozilla\u002F5.0 (Windows NT 6.1; WOW64) AppleWebKit\u002F537.36 (KHTML, like Gecko) Chrome\u002F49.0.2623.22 \u003C\u002Fspan\u003E\u003Cspan class=\&se\&\u003E\\\u003C\u002Fspan\u003E\n\u003Cspan class=\&s1\&\u003E
Safari\u002F537.36 SE 2.X MetaSr 1.0'\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Eheaders\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&p\&\u003E{\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'User-Agent'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Euser_agent\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E}\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Eyield\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Escrapy\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003ERequest\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eurl\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&bp\&\u003Eself\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Estart_urls\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eheaders\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eheaders\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Emethod\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'GET'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ecallback\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&bp\&\u003Eself\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eparse\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E2、在首页中抓取大种类的名称和id号,其中yield回调函数中传入的meta值为本次匹配出的大种类的名称和id号\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-python\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E\u003Cspan class=\&k\&\u003Edef\u003C\u002Fspan\u003E \u003Cspan class=\&nf\&\u003Eparse\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&bp\&\u003Eself\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eresponse\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E):\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Euser_agent\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003E'Mozilla\u002F5.0 (Windows NT 6.1; WOW64) AppleWebKit\u002F537.36 (KHTML, like Gecko) Chrome\u002F49.0.2623.22 \u003C\u002Fspan\u003E\u003Cspan class=\&se\&\u003E\\\u003C\u002Fspan\u003E\n\u003Cspan class=\&s1\&\u003E
Safari\u002F537.36 SE 2.X MetaSr 1.0'\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Eheaders\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&p\&\u003E{\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'User-Agent'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Euser_agent\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E}\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Elists\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eresponse\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ebody\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Edecode\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'gbk'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Eselector\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E
\u003Cspan class=\&n\&\u003Eetree\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EHTML\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Elists\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Egoodslist\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eselector\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Expath\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'\u002F\u002F*[@id=\&leftCate\&]\u002Ful\u002Fli'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Efor\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Egoods\u003C\u002Fspan\u003E \u003Cspan class=\&ow\&\u003Ein\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Egoodslist\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Etry\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Ecategory_big\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Egoods\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Expath\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'a\u002Ftext()'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Epop\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ereplace\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'
'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E''\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E
\u003Cspan class=\&c1\&\u003E# 大种类\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Ecategory_big_id\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Egoods\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Expath\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'a\u002F@href'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Epop\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Esplit\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'.'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)[\u003C\u002Fspan\u003E\u003Cspan class=\&mi\&\u003E1\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E]\u003C\u002Fspan\u003E
\u003Cspan class=\&c1\&\u003E# id\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Ecategory_big_url\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s2\&\u003E\&http:\u002F\u002Fcategory.dangdang.com\u002Fpg1-cp01.{}.00.00.00.00.html\&\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\\\n
\u003Cspan class=\&n\&\u003Eformat\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&nb\&\u003Estr\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ecategory_big_id\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E))\u003C\u002Fspan\u003E\n
\u003Cspan class=\&c1\&\u003E# print(\&{}:{}\&.format(category_big_url,category_big))\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Eyield\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Escrapy\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003ERequest\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eurl\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ecategory_big_url\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eheaders\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eheaders\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ecallback\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&bp\&\u003Eself\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Edetail_parse\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Emeta\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E{\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&ID1\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ecategory_big_id\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&ID2\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ecategory_big\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E})\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Eexcept\u003C\u002Fspan\u003E \u003Cspan class=\&ne\&\u003EException\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Epass\u003C\u002Fspan\u003E\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E3、根据传入的大种类的id号抓取每个大种类下的小种类图书标签,yield回调函数中传入的meta值为大种类id号和小种类id号\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-python\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E
\u003Cspan class=\&k\&\u003Edef\u003C\u002Fspan\u003E \u003Cspan class=\&nf\&\u003Edetail_parse\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&bp\&\u003Eself\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eresponse\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E):\u003C\u002Fspan\u003E\n
\u003Cspan class=\&sd\&\u003E'''\u003C\u002Fspan\u003E\n\u003Cspan class=\&sd\&\u003E
ID1:大种类ID
ID2:大种类名称
ID3:小种类ID
ID4:小种类名称\u003C\u002Fspan\u003E\n\u003Cspan class=\&sd\&\u003E
'''\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Eurl\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003E'http:\u002F\u002Fcategory.dangdang.com\u002Fpg1-cp01.{}.00.00.00.00.html'\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eformat\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eresponse\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Emeta\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&ID1\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E])\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Ecategory_small\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Erequests\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eget\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eurl\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Econtents\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eetree\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EHTML\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ecategory_small\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Econtent\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Edecode\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'gbk'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E))\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Egoodslist\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Econtents\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Expath\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'\u002F\u002F*[@class=\&sort_box\&]\u002Ful\u002Fli[1]\u002Fdiv\u002Fspan'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Efor\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Egoods\u003C\u002Fspan\u003E \u003Cspan class=\&ow\&\u003Ein\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Egoodslist\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Etry\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Ecategory_small_name\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Egoods\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Expath\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'a\u002Ftext()'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Epop\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ereplace\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\& \&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Esplit\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'('\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)[\u003C\u002Fspan\u003E\u003Cspan class=\&mi\&\u003E0\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E]\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Ecategory_small_id\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Egoods\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Expath\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'a\u002F@href'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Epop\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Esplit\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'.'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)[\u003C\u002Fspan\u003E\u003Cspan class=\&mi\&\u003E2\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E]\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Ecategory_small_url\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s2\&\u003E\&http:\u002F\u002Fcategory.dangdang.com\u002Fpg1-cp01.{}.{}.00.00.00.html\&\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\\\n
\u003Cspan class=\&n\&\u003Eformat\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&nb\&\u003Estr\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eresponse\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Emeta\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&ID1\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E]),\u003C\u002Fspan\u003E\u003Cspan class=\&nb\&\u003Estr\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ecategory_small_id\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E))\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Eyield\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Escrapy\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003ERequest\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eurl\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ecategory_small_url\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ecallback\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&bp\&\u003Eself\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ethird_parse\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Emeta\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E{\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&ID1\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eresponse\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Emeta\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&ID1\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E],\u003C\u002Fspan\u003E\\\n
\u003Cspan class=\&s2\&\u003E\&ID2\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eresponse\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Emeta\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&ID2\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E],\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&ID3\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ecategory_small_id\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&ID4\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ecategory_small_name\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E})\u003C\u002Fspan\u003E\n\n
\u003Cspan class=\&c1\&\u003E# print(\&============================ {}\&.format(response.meta[\&ID2\&]))
# 大种类名称\u003C\u002Fspan\u003E\n
\u003Cspan class=\&c1\&\u003E# print(goods.xpath('a\u002Ftext()').pop().replace(\& \&,\&\&).split('(')[0])
# 小种类名称\u003C\u002Fspan\u003E\n
\u003Cspan class=\&c1\&\u003E# print(goods.xpath('a\u002F@href').pop().split('.')[2])
# 小种类ID\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Eexcept\u003C\u002Fspan\u003E \u003Cspan class=\&ne\&\u003EException\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Epass\u003C\u002Fspan\u003E\n\u003C\u002Fcode\u003E\u003C\u002Fpre\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E4、抓取各大种类——&小种类下的图书信息\u003C\u002Fp\u003E\u003Cdiv class=\&highlight\&\u003E\u003Cpre\u003E\u003Ccode class=\&language-python\&\u003E\u003Cspan\u003E\u003C\u002Fspan\u003E
\u003Cspan class=\&k\&\u003Edef\u003C\u002Fspan\u003E \u003Cspan class=\&nf\&\u003Ethird_parse\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&bp\&\u003Eself\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eresponse\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E):\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Efor\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Ei\u003C\u002Fspan\u003E \u003Cspan class=\&ow\&\u003Ein\u003C\u002Fspan\u003E \u003Cspan class=\&nb\&\u003Erange\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&mi\&\u003E1\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E\u003Cspan class=\&mi\&\u003E101\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E):\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Eurl\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&s1\&\u003E'http:\u002F\u002Fcategory.dangdang.com\u002Fpg{}-cp01.{}.{}.00.00.00.html'\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eformat\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&nb\&\u003Estr\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ei\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E),\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eresponse\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Emeta\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&ID1\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E],\u003C\u002Fspan\u003E\\\n
\u003Cspan class=\&n\&\u003Eresponse\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Emeta\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&ID3\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E])\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Etry\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Econtents\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Erequests\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eget\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Eurl\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Econtents\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eetree\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003EHTML\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Econtents\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Econtent\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Edecode\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'gbk'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E))\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Egoodslist\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Econtents\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Expath\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'\u002F\u002F*[@class=\&list_aa listimg\&]\u002Fli'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Efor\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Egoods\u003C\u002Fspan\u003E \u003Cspan class=\&ow\&\u003Ein\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Egoodslist\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Eitem\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003EDangdangItem\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Etry\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Eitem\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'comments'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E]\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Egoods\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Expath\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'div\u002Fp[2]\u002Fa\u002Ftext()'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Epop\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Eitem\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'title'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E]\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Egoods\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Expath\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'div\u002Fp[1]\u002Fa\u002Ftext()'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Epop\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Eitem\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'time'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E]\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Egoods\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Expath\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'div\u002Fdiv\u002Fp[2]\u002Ftext()'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Epop\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Ereplace\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&\u002F\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E,\u003C\u002Fspan\u003E \u003Cspan class=\&s2\&\u003E\&\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Eitem\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'price'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E]\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Egoods\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Expath\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'div\u002Fp[6]\u002Fspan[1]\u002Ftext()'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Epop\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Eitem\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'discount'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E]\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Egoods\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Expath\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E(\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'div\u002Fp[6]\u002Fspan[3]\u002Ftext()'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E)\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Epop\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E()\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Eitem\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'category1'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E]\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eresponse\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Emeta\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&ID4\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E]\u003C\u002Fspan\u003E
\u003Cspan class=\&c1\&\u003E# 种类(小)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&n\&\u003Eitem\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&s1\&\u003E'category2'\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E]\u003C\u002Fspan\u003E \u003Cspan class=\&o\&\u003E=\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eresponse\u003C\u002Fspan\u003E\u003Cspan class=\&o\&\u003E.\u003C\u002Fspan\u003E\u003Cspan class=\&n\&\u003Emeta\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E[\u003C\u002Fspan\u003E\u003Cspan class=\&s2\&\u003E\&ID2\&\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E]\u003C\u002Fspan\u003E
\u003Cspan class=\&c1\&\u003E# 种类(大)\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Eexcept\u003C\u002Fspan\u003E \u003Cspan class=\&ne\&\u003EException\u003C\u002Fspan\u003E\u003Cspan class=\&p\&\u003E:\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Epass\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Eyield\u003C\u002Fspan\u003E \u003Cspan class=\&n\&\u003Eitem\u003C\u002Fspan\u003E\n
\u003Cspan class=\&k\&\u003Eexcept\u003C\u002Fspan\u003E \u003Cspan class=\&ne\&\u003EException\u003C\u002Fspan\u0

我要回帖

更多关于 保险无法找到第三方 的文章

 

随机推荐