当前位置: 首页 > news >正文

和老妇做爰视频网站html制作电影网站

和老妇做爰视频网站,html制作电影网站,网站重建,建立健全制度下文参考#xff1a;http://www.jb51.net/article/57183.htm个人也是稍加整理#xff0c;修改其中的一些错误#xff0c;这些错误与scrapy版本选择有关#xff0c;个环境#xff1a;Win7x64_SP1 Python2.7 scrapy1.1另外例子中的URL(http://www.dmoz.org/Computers/Prog…下文参考http://www.jb51.net/article/57183.htm个人也是稍加整理修改其中的一些错误这些错误与scrapy版本选择有关个环境Win7x64_SP1 Python2.7 scrapy1.1另外例子中的URL(http://www.dmoz.org/Computers/Programming/Languages/Python/Books/)经常无法访问大家注意一下不要认为脚本有问题。废话说完了下面正式开始网络爬虫是在网上进行数据抓取的程序使用它能够抓取特定网页的HTML数据。虽然我们利用一些库开发一个爬虫程序但是使用框架可以大大提高效 率缩短开发时间。Scrapy是一个使用Python编写的轻量级的简单轻巧并且使用起来非常的方便。使用Scrapy可以很方便的完成网上数据 的采集工作它为我们完成了大量的工作而不需要自己费大力气去开发。首先先要回答一个问题。问把网站装进爬虫里总共分几步答案很简单四步新建项目 (Project)新建一个新的爬虫项目明确目标(Items)明确你想要抓取的目标制作爬虫(Spider)制作爬虫开始爬取网页存储内容(Pipeline)设计管道存储爬取内容好的基本流程既然确定了那接下来就一步一步的完成就可以了。1.新建项目(Project)在空目录下按住Shift键右击选择“在此处打开命令窗口”输入一下命令scrapy startproject tutorial其中tutorial为项目名称。可以看到将会创建一个tutorial文件夹目录结构如下tutorial/scrapy.cfgtutorial/__init__.pyitems.pypipelines.pysettings.pyspiders/__init__.py...下面来简单介绍一下各个文件的作用scrapy.cfg项目的配置文件tutorial/项目的Python模块将会从这里引用代码tutorial/items.py项目的items文件tutorial/pipelines.py项目的pipelines文件tutorial/settings.py项目的设置文件tutorial/spiders/存储爬虫的目录2.明确目标(Item)在Scrapy中items是用来加载抓取内容的容器有点像Python中的Dic也就是字典但是提供了一些额外的保护减少错误。一般来说item可以用scrapy.item.Item类来创建并且用scrapy.item.Field对象来定义属性(可以理解成类似于ORM的映射关系)。接下来我们开始来构建item模型(model)。首先我们想要的内容有名称(name)链接(url)描述(description)修改tutorial目录下的items.py文件在原本的class后面添加我们自己的class。因为要抓dmoz.org网站的内容所以我们可以将其命名为DmozItem# Define here the models for your scraped items## See documentation in:# http://doc.scrapy.org/en/latest/topics/items.htmlfrom scrapy.item import Item, Fieldclass TutorialItem(Item):# define the fields for your item here like:# name Field()passclass DmozItem(Item):title Field()link Field()desc Field()刚开始看起来可能会有些看不懂但是定义这些item能让你用其他组件的时候知道你的 items到底是什么。可以把Item简单的理解成封装好的类对象。3.制作爬虫(Spider)制作爬虫总体分两步先爬再取。也就是说首先你要获取整个网页的所有内容然后再取出其中对你有用的部分。3.1爬Spider是用户自己编写的类用来从一个域(或域组)中抓取信息。他们定义了用于下载的URL列表、跟踪链接的方案、解析网页内容的方式以此来提取items。要建立一个Spider你必须用scrapy.spider.BaseSpider创建一个子类并确定三个强制的属性name爬虫的识别名称必须是唯一的在不同的爬虫中你必须定义不同的名字。start_urls爬取的URL列表。爬虫从这里开始抓取数据所以第一次下载的数据将会从这些urls开始。其他子URL将会从这些起始URL中继承性生成。parse()解析的方法调用的时候传入从每一个URL传回的Response对象作为唯一参数负责解析并匹配抓取的数据(解析为item)跟踪更多的URL。也就是把Url存储下来并依此为起点逐步扩散开去抓取所有符合条件的网页Url存储起来继续爬取。下面我们来写第一只爬虫命名为dmoz_spider.py保存在tutorial\spiders目录下。dmoz_spider.py代码如下from scrapy.spider import Spiderclass DmozSpider(Spider):name dmozallowed_domains [dmoz.org]start_urls [http://www.dmoz.org/Computers/Programming/Languages/Python/Books/,http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/]def parse(self, response):filename response.url.split(/)[-2]open(filename, wb).write(response.body)allow_domains是搜索的域名范围也就是爬虫的约束区域规定爬虫只爬取这个域名下的网页。从parse函数可以看出将链接的最后两个地址取出作为文件名进行存储。然后运行一下看看在tutorial目录下按住shift右击在此处打开命令窗口输入scrapy crawl dmoz运行结果最后一句INFO: Closing spider (finished)表明爬虫已经成功运行并且自行关闭了。包含 [dmoz]的行 那对应着我们的爬虫运行的结果。可以看到start_urls中定义的每个URL都有日志行。还记得我们的start_urls吗http://www.dmoz.org/Computers/Programming/Languages/Python/Bookshttp://www.dmoz.org/Computers/Programming/Languages/Python/Resources因为这些URL是起始页面所以他们没有引用(referrers)所以在它们的每行末尾你会看到 (referer: )。在parse 方法的作用下两个文件被创建分别是 Books 和 Resources这两个文件中有URL的页面内容。那么在刚刚的电闪雷鸣之中到底发生了什么呢首先Scrapy为爬虫的 start_urls属性中的每个URL创建了一个 scrapy.http.Request 对象 并将爬虫的parse 方法指定为回调函数。然后这些 Request被调度并执行之后通过parse()方法返回scrapy.http.Response对象并反馈给爬虫。3.2取爬取整个网页完毕接下来的就是的取过程了。光存储一整个网页还是不够用的。在基础的爬虫里这一步可以用正则表达式来抓。在Scrapy里使用一种叫做 XPath selectors的机制它基于 XPath表达式。如果你想了解更多selectors和其他机制你可以查阅资料点我点我这是一些XPath表达式的例子和他们的含义/html/head/title: 选择HTML文档元素下面的 标签。/html/head/title/text(): 选择前面提到的 元素下面的文本内容//td: 选择所有 元素//div[classmine]: 选择所有包含 classmine 属性的div 标签元素以上只是几个使用XPath的简单例子但是实际上XPath非常强大。可以参照W3C教程点我点我。为了方便使用XPathsScrapy提供XPathSelector 类有两种可以选择HtmlXPathSelector(HTML数据解析)和XmlXPathSelector(XML数据解析)。必须通过一个 Response 对象对他们进行实例化操作。你会发现Selector对象展示了文档的节点结构。因此第一个实例化的selector必与根节点或者是整个目录有关 。在Scrapy里面Selectors 有四种基础的方法(点击查看API文档)xpath()返回一系列的selectors每一个select表示一个xpath参数表达式选择的节点css()返回一系列的selectors每一个select表示一个css参数表达式选择的节点extract()返回一个unicode字符串为选中的数据re()返回一串一个unicode字符串为使用正则表达式抓取出来的内容熟悉完了实验的小白鼠接下来就是用Shell爬取网页了。进入到项目的顶层目录也就是第一层tutorial文件夹下在cmd中输入scrapy shell http://www.dmoz.org/Computers/Programming/Languages/Python/Books/回车后可以看到如下的内容在Shell载入后你将获得response回应存储在本地变量 response中。所以如果你输入response.body你将会看到response的body部分也就是抓取到的页面内容或者输入response.headers 来查看它的 header部分现在就像是一大堆沙子握在手里里面藏着我们想要的金子所以下一步就是用筛子摇两下把杂质出去选出关键的内容。selector就是这样一个筛子。在旧的版本中Shell实例化两种selectors一个是解析HTML的 hxs 变量一个是解析XML 的 xxs 变量。而现在的Shell为我们准备好的selector对象sel可以根据返回的数据类型自动选择最佳的解析方案(XML or HTML)。然后我们来捣弄一下~要彻底搞清楚这个问题首先先要知道抓到的页面到底是个什么样子。比如我们要抓取网页的标题也就是这个标签可以输入response.xpath(//title)运行结果这样就能把这个标签取出来了用extract()和text()还可以进一步做处理。备注简单的罗列一下有用的xpath路径表达式表达式 描述nodename 选取此节点的所有子节点。/ 从根节点选取。// 从匹配选择的当前节点选择文档中的节点而不考虑它们的位置。. 选取当前节点。.. 选取当前节点的父节点。 选取属性。全部的实验结果如下In[i]表示第i次实验的输入Out[i]表示第i次结果的输出(建议大家参照W3C教程)In [1]: response.xpath(//title)Out[1]: [Open Directory - Computers: Progr]In [2]: response.xpath(//title).extract()Out[2]: [uOpen Directory - Computers: Programming: Languages: Python: Books]In [3]: response.xpath(//title/text())Out[3]: []In [4]: response.xpath(//title/text()).extract()Out[4]: [uOpen Directory - Computers: Programming: Languages: Python: Books]In [5]: response.xpath(//title/text()).re((\w):)Out[5]: [uComputers, uProgramming, uLanguages, uPython]当然title这个标签对我们来说没有太多的价值下面我们就来真正抓取一些有意义的东西。使用火狐的审查元素我们可以清楚地看到我们需要的东西如下我们可以用如下代码来抓取这个标签response.xpath(//ul/li)从标签中可以这样获取网站的描述response.xpath(//ul/li/text()).extract()可以这样获取网站的标题response.xpath(//ul/li/a/text()).extract()可以这样获取网站的超链接response.xpath(//ul/li/a/href).extract()当然前面的这些例子是直接获取属性的方法。我们注意到xpath返回了一个对象列表那么我们也可以直接调用这个列表中对象的属性挖掘更深的节点(参考Nesting selectors andWorking with relative XPaths in the Selectors)sites response.xpath(//ul/li)for site in sites:title site.xpath(a/text()).extract()link site.xpath(a/href).extract()desc site.xpath(text()).extract()print title, link, desc3.4xpath实战我们用shell做了这么久的实战最后我们可以把前面学习到的内容应用到dmoz_spider这个爬虫中。在原爬虫的parse函数中做如下修改from scrapy.spider import Spiderfrom scrapy.selector import Selectorclass DmozSpider(Spider):name dmozallowed_domains [dmoz.org]start_urls [http://www.dmoz.org/Computers/Programming/Languages/Python/Books/,http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/]def parse(self, response):sel Selector(response)sites sel.xpath(//ul/li)for site in sites:title site.xpath(a/text()).extract()link site.xpath(a/href).extract()desc site.xpath(text()).extract()print title注意我们从scrapy.selector中导入了Selector类并且实例化了一个新的Selector对象。这样我们就可以像Shell中一样操作xpath了。我们来试着输入一下命令运行爬虫(在tutorial根目录里面)scrapy crawl dmoz运行结果如下果然成功的抓到了所有的标题。但是好像不太对啊怎么TopPython这种导航栏也抓取出来了呢我们只需要红圈中的内容看来是我们的xpath语句有点问题没有仅仅把我们需要的项目名称抓取出来也抓了一些无辜的但是xpath语法相同的元素。审查元素我们发现我们需要的具有classdirectory-url的属性那么只要把xpath语句改成sel.xpath(//ul[classdirectory-url]/li)即可将xpath语句做如下调整from scrapy.spider import Spiderfrom scrapy.selector import Selectorclass DmozSpider(Spider):name dmozallowed_domains [dmoz.org]start_urls [http://www.dmoz.org/Computers/Programming/Languages/Python/Books/,http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/]def parse(self, response):sel Selector(response)sites sel.xpath(//ul[classdirectory-url]/li)for site in sites:title site.xpath(a/text()).extract()link site.xpath(a/href).extract()desc site.xpath(text()).extract()print my print ,title成功抓出了所有的标题绝对没有滥杀无辜3.5使用Item作为一只爬虫Spiders希望能将其抓取的数据存放到Item对象中。为了返回我们抓取数据spider的最终代码应当是这样:from scrapy.spiders import Spiderfrom scrapy.selector import Selectorfrom tutorial.items import DmozItemclass DmozSpider(Spider):name dmozallowed_domains [dmoz.org]start_urls [http://www.dmoz.org/Computers/Programming/Languages/Python/Books/,http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/]def parse(self, response):sel Selector(response)# sites sel.xpath(//ul/li)sites sel.xpath(//ul[classdirectory-url]/li)items []for site in sites:item DmozItem()item[title] site.xpath(a/text()).extract()item[link] site.xpath(a/href).extract()item[desc] site.xpath(text()).extract()items.append(item)# print [my print] ,titlereturn items4.存储内容(Pipeline)保存信息的最简单的方法是通过Feed exports主要有四种JSONJSON linesCSVXML。我们将结果用最常用的JSON导出命令如下scrapy crawl dmoz -o items.json -t json-o 后面是导出文件名-t 后面是导出类型。然后来看一下导出的结果用文本编辑器打开json文件即可(为了方便显示在item中删去了除了title之外的属性)因为这个只是一个小型的例子所以这样简单的处理就可以了。如果你想用抓取的items做更复杂的事情你可以写一个 Item Pipeline(条目管道)。这个我们以后再慢慢玩^_^以上便是python爬虫框架Scrapy制作爬虫抓取网站内容的全部过程了非常的详尽吧希望能够对大家有所帮助有需要的话也可以和我联系一起进步
http://www.ihoyoo.com/news/61137.html

相关文章:

  • 做职业测评的网站资海集团网站建设
  • 自适应的网站模板网站维护基本概念认知
  • 品牌网站有哪些内容凡客建网站
  • 定制的网站源码免费游戏推广
  • 微信公众号平台及网站建设计划怎么才服务器上做网站
  • 龙华做网站哪家好seo最新优化技术
  • 广州 flash 网站网站开发如何记账
  • 做视频用的网站搭建cms网站
  • 郑州营销网站公司地址佛山市建设网站
  • 目前网站建设主流技术架构管理咨询收费标准
  • 网站建设进展报告网站开发短期培训
  • 宁波网站建设风格wordpress恶意代码
  • 网站专题设计欣赏音乐网站整站程序
  • c 如何做网站搜索引擎的优化方法
  • 前端做兼职网站python可以做网站模板吗
  • .net做网站之前设置泰安招工招聘信息
  • 网站开发哪家强用php做的企业网站作业
  • 成都php网站建设家政服家政服务网站模板
  • 营销型网站建设的一般过程包括哪些环节网页制作步骤流程
  • 用什么做网站比较好珠海百度seo
  • 建站行业发展前景Wordpress自建主题视频百度云下载
  • 尚德建设集团网站品牌建设找晓哥
  • dede网站演示vs2012 网站开发
  • 合肥市住房和城乡建设局网站成品网站w灬 源码1688网页
  • wordpress手机号网站外贸网站镜像
  • 如何创建网站寻找外贸客户的网站
  • 网站服务器租赁费高吗专业网站建设的意义
  • 海宁高端高端网站设计公司做个网站多少钱
  • 自己做网站卖仿货seo服务器优化
  • 2016织梦小说网站源码网站怎样做推广计划