scrapy入门经典

scrapy入门经典

ID:20885681

大小:449.36 KB

页数:19页

时间:2018-10-17

scrapy入门经典_第1页
scrapy入门经典_第2页
scrapy入门经典_第3页
scrapy入门经典_第4页
scrapy入门经典_第5页
资源描述:

《scrapy入门经典》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Scrapy入门scrapy简介Scrapy,Python开发的一个快速,灵活,可扩展性高的web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy可以用于数据挖掘、监测和自动化测试。Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider爬虫等,继承这些基类可以轻松实现自己的爬虫。内容安装scrapy创建一个Scrapy项目定义提取的Item编写爬取网站的spider并提取Item编写ItemPipeline来存储提取到的Item(即数据)安

2、装下列的安装步骤假定您已经安装好下列程序:Python2.7https://www.python.org/PythonPackage:pipandsetuptools.现在pip依赖setuptools,如果未安装,则会自动安装setuptools。https://pip.pypa.io/en/latest/installing/lxml.大多数Linux发行版自带了lxml。如果缺失,请查看http://lxml.de/installation.htmlOpenSSL.除了Windows之外的系统都已经提供。您可以使用pip来安

3、装Scrapy(推荐使用pip来安装Pythonpackage).使用pip安装:pipinstallScrapy创建项目在开始爬取之前,您必须创建一个新的Scrapy项目。进入您打算存储代码的目录中,运行下列命令:scrapystartprojecttutorial该命令将会创建包含下列内容的tutorial目录:这些文件分别是:scrapy.cfg:项目的配置文件tutorial/:该项目的python模块。之后您将在此加入代码。tutorial/items.py:项目中的item文件.tutorial/pipelines.p

4、y:项目中的pipelines文件.tutorial/settings.py:项目的设置文件.tutorial/spiders/:放置spider代码的目录.定义ItemItem是保存爬取到的数据的容器;其使用方法和python字典类似,并且提供了额外保护机制来避免拼写错误导致的未定义字段错误。类似在ORM中做的一样,您可以通过创建一个scrapy.Item类,并且定义类型为scrapy.Field的类属性来定义一个Item。我们需要从dmoz中获取名字,url,以及网站的描述。对此,在item中定义相应的字段。编辑tutoria

5、l目录中的items.py文件:编写第一个爬虫(Spider)Spider是用户编写用于从单个网站(或者一些网站)爬取数据的类。其包含了一个用于下载的初始URL,如何跟进网页中的链接以及如何分析页面中的内容,提取生成item的方法。为了创建一个Spider,您必须继承scrapy.Spider类,且定义以下三个属性:name:用于区别Spider。该名字必须是唯一的,您不可以为不同的Spider设定相同的名字。start_urls:包含了Spider在启动时进行爬取的url列表。因此,第一个被获取到的页面将是其中之一。后续的URL

6、则从初始的URL获取到的数据中提取。parse()是spider的一个方法。被调用时,每个初始URL完成下载后生成的Response对象将会作为唯一的参数传递给该函数。该方法负责解析返回的数据(responsedata),提取数据(生成item)以及生成需要进一步处理的URL的Request对象。以下为我们的第一个Spider代码,保存在tutorial/spiders目录下的dmoz_spider.py文件中:爬取进入项目的根目录,执行下列命令启动spider:scrapycrawldmozcrawldmoz启动用于爬取dmoz

7、.org的spider,您将得到类似的输出:提取ItemSelectors选择器简介从网页中提取数据有很多方法。Scrapy使用了一种基于XPath和CSS表达式机制:ScrapySelectors。这里给出XPath表达式的例子及对应的含义:/html/head/title:选择HTML文档中标签内的元素/html/head/title/text():选择上面提到的<title>元素的文字//td:选择所有的<td>元素//div[@class="mine"]:选择所有具有class="mine"属性的</p><p>8、div元素提取数据现在,我们来尝试从这些页面中提取些有用的数据。在我们的spider中加入这段代码:使用itemItem对象是自定义的python字典。您可以使用标准的字典语法来获取到其每个字段的值。(字段即是我们之前用Field赋值的属性):保存</p> </div> <div class="mt-3 bg-white"> <div class="d-lg-block d-none px-3 px-lg-4 py-3 border-bottom text-center font-18"> 当前文档最多预览五页,下载文档查看全文 </div> <div class="detail-fixed-feature d-none d-lg-block" id="detailFixedFeatureBox"> <div class="px-3 px-lg-4 py-3 d-flex align-items-center justify-content-between fixed-feature-box" id="detailFixedFeature"> <div class="d-lg-flex d-none align-items-center"> <div> <a class="btn btn-outline-danger article-state" href="javascript:;" data-id="20885681" data-code="438274" data-title="scrapy入门经典"> <span>侵权申诉</span> </a> <button type="button" class="btn btn-outline-secondary with-light ml-2" data-toggle="modal" data-target="#reportModal" data-id="20885681"><span>举报</span></button> </div> <nav class="d-flex align-items-center ml-4" id="anchorPoint"> <a href="javascript:;" class="btn btn-light anchor-pre px-2"><i class="iconfont text-muted"></i></a> <div class="text-muted mb-0 pre-point-list" id="prePointList"> <a class="px-2 active nav-link" href="#anchorImg0">1</a> <a class="px-2 nav-link" href="#anchorImg1">1</a> <a class="px-2 nav-link" href="#anchorImg2">2</a> <a class="px-2 nav-link" href="#anchorImg3">3</a> <a class="px-2 nav-link" href="#anchorImg4">4</a> <a class="px-2 nav-link" href="#anchorImg5">5</a> / <span class="px-2" id="prePageNums">19</span> </div> <a href="javascript:;" class="btn btn-light anchor-next px-2"><i class="iconfont text-muted"></i></a> </nav> </div> <div class="d-flex align-items-center"> <p class="d-lg-block d-none font-14 text-black-50 mb-0 mr-2">此文档下载收益归作者所有</p> <button class="btn btn-danger detail-download-btn px-3 ml-0 font-16" data-btn="downloadfile" style="width:128px;height:40px;" data-id="20885681" data-price="2000" data-size="449.36 KB" data-page="19页" data-type="pptx" data-binddown="true" data-isold="new_content" data-vip="0" data-title="scrapy入门经典">下载文档</button> </div> </div> </div> </div> <div class="d-block d-lg-none px-3 px-lg-4 py-3 border-bottom text-center font-14" style="color:#999">当前文档最多预览五页,下载文档查看全文</div> <button class="btn d-block w-100 d-lg-none btn-danger detail-download-btn px-3 ml-0 font-16" data-btn="downloadfile" data-id="20885681" data-price="2000" data-size="449.36 KB" data-page="19页" data-type="pptx" data-binddown="true" data-isold="new_content" data-vip="0" data-title="scrapy入门经典">点击下载本文档 </button> </div> <div class="px-3 px-lg-4 py-3 bg-white mt-3"> <ul class="nav custom-tab border-bottom" id="myTab" role="tablist"> <li class="nav-item" role="presentation"> <a class="nav-link active px-0 mr-4 font-16 font-weight-light pb-3" id="tips-tab" data-toggle="tab" href="#showTips" role="tab" aria-controls="showTips" aria-selected="true">版权提示</a> </li> <li class="nav-item" role="presentation"> <a class="nav-link px-0 pb-3 font-16 font-weight-light text-black-50" href="/d-20885681.html" >下载文档</a> </li> <dl class="flex-grow-1 mb-0 d-lg-none"> <li class="ml-3 float-right d-lg-none"> <button type="button" class="btn btn-light" data-toggle="modal" data-target="#reportModal" data-id="20885681"><span>举报</span></button> </li> </dl> </ul> <div class="tab-content with-content pt-3" id="myTabContent"> <div class="tab-pane fade show active font-14" id="showTips" role="tabpanel" aria-labelledby="showTips-tab"> 温馨提示: <br> 1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。<br> 2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。<br> 3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。<br> 4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。 <br> </div> </div> </div> </div> <div class="detail-sidebar d-none d-lg-block"> <div id="columnDetailSiderRight"> <div class="detail-yourlike mt-0 pb-2" id="relativeArticle"> <div class="border-bottom py-2 d-flex align-items-center justify-content-between"> <h5 class="font-16">相关文章</h5> <a class="font-14 hover-letter-spacing" href="/ucenter/search/index.html?text=scrapy入门经典" target="_blank" rel="nofollow">更多<i class="iconfont font-12 pl-1"></i></a> </div> <ul class="font-14 like-list"> <li class=""> <a class="text-ellipsis office-icon text-dark office-icon-pdf" href="/p-15621682.html" title="算法竞赛入门经典完整版(acm竞赛入门经典)" target="_blank">算法竞赛<span class="text-danger">入</span><span class="text-danger">门</span><span class="text-danger">经</span><span class="text-danger">典</span>完整版(<span class="text-danger">a</span><span class="text-danger">c</span>m竞赛<span class="text-danger">入</span><span class="text-danger">门</span><span class="text-danger">经</span><span class="text-danger">典</span>)</a> </li> <li class=""> <a class="text-ellipsis office-icon text-dark office-icon-doc" href="/p-20655555.html" title="基于scrapy框架的微博爬虫" target="_blank">基于<span class="text-danger">s</span><span class="text-danger">c</span><span class="text-danger">r</span><span class="text-danger">a</span><span class="text-danger">p</span><span class="text-danger">y</span>框架的微博爬虫</a> </li> <li class=""> <a class="text-ellipsis office-icon text-dark office-icon-ppt" href="/p-20793738.html" title="linux入门经典" target="_blank">linux<span class="text-danger">入</span><span class="text-danger">门</span><span class="text-danger">经</span><span class="text-danger">典</span></a> </li> <li class=""> <a class="text-ellipsis office-icon text-dark office-icon-doc" href="/p-22823046.html" title="基于scrapy框架的微博爬虫" target="_blank">基于<span class="text-danger">s</span><span class="text-danger">c</span><span class="text-danger">r</span><span class="text-danger">a</span><span class="text-danger">p</span><span class="text-danger">y</span>框架的微博爬虫</a> </li> <li class=""> <a class="text-ellipsis office-icon text-dark office-icon-pdf" href="/p-32819513.html" title="PhoneGap入门经典" target="_blank">PhoneG<span class="text-danger">a</span><span class="text-danger">p</span><span class="text-danger">入</span><span class="text-danger">门</span><span class="text-danger">经</span><span class="text-danger">典</span></a> </li> <li class=""> <a class="text-ellipsis office-icon text-dark office-icon-pdf" href="/p-33331637.html" title="Scrapy Documentation" target="_blank">S<span class="text-danger">c</span><span class="text-danger">r</span><span class="text-danger">a</span><span class="text-danger">p</span><span class="text-danger">y</span>Do<span class="text-danger">c</span>ument<span class="text-danger">a</span>tion</a> </li> <li class=""> <a class="text-ellipsis office-icon text-dark office-icon-pdf" href="/p-33484503.html" title="Groovy经典入门" target="_blank">G<span class="text-danger">r</span>oov<span class="text-danger">y</span><span class="text-danger">经</span><span class="text-danger">典</span><span class="text-danger">入</span><span class="text-danger">门</span></a> </li> <li class=""> <a class="text-ellipsis office-icon text-dark office-icon-pptx" href="/p-33522516.html" title="【8A文】Scrapy入门经典.pptx" target="_blank">【8A文】S<span class="text-danger">c</span><span class="text-danger">r</span><span class="text-danger">a</span><span class="text-danger">p</span><span class="text-danger">y</span><span class="text-danger">入</span><span class="text-danger">门</span><span class="text-danger">经</span><span class="text-danger">典</span>.<span class="text-danger">p</span><span class="text-danger">p</span>tx</a> </li> <li class=""> <a class="text-ellipsis office-icon text-dark office-icon-doc" href="/p-42631100.html" title="JavaScript入门经典" target="_blank">J<span class="text-danger">a</span>v<span class="text-danger">a</span>S<span class="text-danger">c</span><span class="text-danger">r</span>i<span class="text-danger">p</span>t<span class="text-danger">入</span><span class="text-danger">门</span><span class="text-danger">经</span><span class="text-danger">典</span></a> </li> <li class=""> <a class="text-ellipsis office-icon text-dark office-icon-pdf" href="/p-43515605.html" title="lesson9--scrapy实战" target="_blank">le<span class="text-danger">s</span><span class="text-danger">s</span>on9--<span class="text-danger">s</span><span class="text-danger">c</span><span class="text-danger">r</span><span class="text-danger">a</span><span class="text-danger">p</span><span class="text-danger">y</span>实战</a> </li> </ul> </div> <div class="detail-yourlike pb-2"> <div class="border-bottom py-2"> <h5 class="font-16">相关标签</h5> </div> <ul class="font-14 like-list d-flex flex-wrap"> <a class="search-tag" href="/tags/1565921/" target="_blank">入门</a> <a class="search-tag" href="/tags/540550/" target="_blank">经典</a> </ul> </div> <script src="/d/js/acmsd/thea1.js"></script> </div> </div> </div> <footer> <div class="container d-none d-lg-block mb-4"> <div class="d-flex justify-content-between footer-nav"> <ul class="d-flex foot-nav"> <li> <h5>常见问题</h5> <a class=text-decoration-none href=/help/wenti/upload/ target=_blank> 关于上传 </a><a class=text-decoration-none href=/help/wenti/xiazai/ target=_blank> 关于下载 </a><a class=text-decoration-none href=/help/wenti/qinquan/ target=_blank> 关于侵权 </a><a class=text-decoration-none href=/help/wenti/fenxaing/ target=_blank> 分享文档赚钱教程 </a> </li> <li> <h5>关于我们</h5> <a class=text-decoration-none href=/help/about/wzjs/ target=_blank> 网站介绍 </a><a class=text-decoration-none href=/help/about/gywm/ target=_blank> 关于我们 </a><a class=text-decoration-none href=/help/about/lxwm/ target=_blank> 联系我们 </a> </li> <li> <h5>版权问题</h5> <a class=text-decoration-none href=/help/banquan/bqsm/ target=_blank> 版权声明 </a><a class=text-decoration-none href=/help/banquan/qqcl/ target=_blank> 侵权处理 </a><a class=text-decoration-none href=/help/banquan/mzsm/ target=_blank> 免责声明 </a> </li> <li> <h5>协议条款</h5> <a class=text-decoration-none href=/help/xieyi/yhxy/ target=_blank> 用户协议 </a><a class=text-decoration-none href=/help/xieyi/fwtk/ target=_blank> 用户服务条款 </a><a class=text-decoration-none href=/help/xieyi/ysbh/ target=_blank> 用户隐私保护 </a> </li> <li> <h5>网站导航</h5> <a class="text-decoration-none help-nav-item" href="/sitemaps.xml" data-name="网站地图" target="_blank">网站地图</a> <a class="text-decoration-none help-nav-item" href="/list.html" data-name="全部分类" target="_blank">全部分类</a> <a class="text-decoration-none help-nav-item" href="/sitemaps/index.html" data-name="资源地图" target="_blank">资源地图</a> </li> </ul> <div class="foot-qrcode d-flex"> <div> <div class="subsitute-bg"><img src="https://www.wenku365.com/d/file/2022/07-08/f23df57d987ef7ad9acb33fe5abf9854.jpg"></div> <p>关注公众号<br></p> </div> </div> </div> </div> <div class="footer-copyright"> <p><a href="/" target="_blank">天天文库</a>站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有【成交的100%(原创)】。</p> <p>本站是网络服务平台方,若您的权利被侵害,侵权客服QQ:3074922707 欢迎举报。</p> <p>Copyright 2004-2021 <a href="https://www.wenku365.com/" target="_blank">wenku365.com</a> All Rights Reserved <a href="https://beian.miit.gov.cn/#/Integrated/index" rel="nofollow" target="_blank">闽ICP备15016911号-5 </a></p> <p>闽公网安备 <a href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=35052402000320" rel="nofollow" target="_blank">35052402000320</a></p> <p> <a href="https://www.wenku365.com/zt.html" target="_blank">专题文集</a> <a href="https://www.wenku365.com/zt-90007.html" target="_blank">丨职业培训</a> <a href="https://www.wenku365.com/zt-90005.html" target="_blank">丨实用范文</a> <a href="https://www.wenku365.com/zt-90010.html" target="_blank">丨商业材料</a> <a href="https://www.wenku365.com/zt-90013.html" target="_blank">丨合同协议</a> <a href="https://www.wenku365.com/zt-90009.html" target="_blank">丨PPT专题</a></p> </div> </footer> <script src="//static.wenku365.com/wenku365/js/global.min.js?"></script> <script src="//static.wenku365.com/wenku365/js/clipboard.min.js?"></script> <script src="//static.wenku365.com/wenku365/js/jquery.treeview.js?"></script> <script src="//static.wenku365.com/wenku365/js/jquery.share.min.js?"></script> <script src="//static.wenku365.com/wenku365/js/common.min.js?"></script> <script src="//static.wenku365.com/wenku365/js/downloadFile.js?"></script> <script src="//static.wenku365.com/wenku365/js/loginWindow.js?"></script> <script src="//static.wenku365.com/wenku365/js/windowRecharge.js?"></script> <script src="//static.wenku365.com/wenku365/js/viewer.min.js?"></script> <script src="//static.wenku365.com/wenku365/js/detail.js?"></script> <!-- 2023-05-07 00:14:29 --> </body> </html>