此爬虫内容无架构:

1.URL管理器:用集合,mysql表,缓存等

2.网页下载器:实现网页下载,

  urllib2:官方基础模块

  requests:三方的(更强):伪装成浏览器访问,代理登录,https加密访问等

3.页面解析器:

  正则

  html.parser解析器模块

  lxml 解析器

 soup = BeautifulSoup(html,"lxml")

 print soup.a
print "+++"
print soup.a.string
print "+++"
print type(soup.a.string) # <class 'bs4.element.NavigableString'>

第一行:将 html.text 用 lxml 解析,后赋值给soup变量

第三行:打印出搜索到的第一个 a 标签(即a节点)

第五行:打印出 a 标签内的文字。

获取标签 dl 所有的直接子节点:
1 for i in soup.dl.contents:
print i
print "++++++++++++++++"
# soup.dl.contents  :返回其下所有节点(列表方式)
# soup.dl.children  :遍历才能获得内容

获取节点的内容:用 soup.dl.strings
 for string in soup.dl.strings:
print repr(string)

查找内容:

 print soup.find_all('dt')  #返回列表,里面包括了所有的 dt 标签
print soup.select("dt") #同上,,[<dt>Mutation ID</dt>, <dt>Gene name</dt>, <dt>Remark</dt>, <dt>Recurrent</dt>, <dt>Drug resistance</dt>]
print soup.select(".inline > dd") #精准定位,查找 dd 标签

print soup.select("dt").get_text()  # AttributeError: 'list' object has no attribute 'get_text'

用 get_text() 方法,获取里面的文字。

 for dt in soup.select(".inline > dt"):
print dt.get_text()
print "++++++++++++++++++" #每获取一个 dt 里面的文字,打印一次这行,结果如下:
 Mutation ID
++++++++++++++++++
Gene name
++++++++++++++++++
AA mutation
++++++++++++++++++
显示搜索对象下所有的文字:
1 for dt in soup.select(".inline"):
print dt.get_text()
print '**********************' # 会在显示完 .inline 下面 所有的递归子标签里的文字后,打印一次本行。本例中只打印了一次。也就是本遍历值遍历了一个,已验证

其他关于 find_all() 和 select()

 soup.find_all('a') # 找到所有 a 标签,遍历取出
soup.find_all(['a','b']) #任意匹配一个即可返回,
soup.find_all(id = "...") #根据 id 号码查找
soup.find_all("a",class_="...") #查找固定 class 的 a 标签
soup.find_all("a",limit=2) # 限制搜索到的 a 标签的个数,只要前两个
soup.find_all("p",recursive=False) # 只搜索 返回直接子节点。 soup.select("a") #搜索所有 a 标签
soup.select("#idname") # 根据 id 名搜索
soup.select(".classname") # 根据 class 搜索
soup.select(".classname > p > a > ...") # 精准搜索
soup.select("p a[class="..."]") # 搜索 p 标签下的 class为...的 a 标签 14 node.get_text() # 获取节点的文字
.select(a[href='...']) # 获取节点的 href 属性
node.name # 获取节点的 名字

spider(一)的更多相关文章

  1. spider RPC入门指南

    本部分将介绍使用spider RPC开发分布式应用的客户端和服务端. spider RPC中间件基于J2SE 8开发,因此需要确保服务器上安装了JDK 8及以上版本,不依赖于任何额外需要独立安装和配置 ...

  2. Scrapy:为spider指定pipeline

    当一个Scrapy项目中有多个spider去爬取多个网站时,往往需要多个pipeline,这时就需要为每个spider指定其对应的pipeline. [通过程序来运行spider],可以通过修改配置s ...

  3. spider RPC过滤器

    spider支持在请求执行前或完成后进行特殊处理,比如安全性检查.敏感字段混淆等等.为此,spider提供了BeforeFilter和AfterFilter.其执行位置如下图所示: 流水线插件配置在s ...

  4. spider RPC插件化体系

    为了满足灵活扩展的需要,spider支持灵活的自定义插件扩展,从功能上来说,插件和过滤器的差别在于过滤器不会阻止请求的执行同时对于主程序不会有API上的影响(比如servlet 过滤器和监听器)(最多 ...

  5. spider RPC管理接口

    为了在独立管理模式下尽可能的容易运行时排查问题,spider中间件提供了一系列restful api用于动态管理当前节点的路由,下游节点等.目前支持的RESTFUL API如下所示: 功能 服务号 R ...

  6. spider RPC高级特性

    多租户 spider原生支持多租户部署,spider报文头对外开放了机构号.系统号两个属性用于支持多租户场景下的路由. 多租户场景下的路由可以支持下述几种模式: n  系统号: n  系统号+服务号( ...

  7. spider RPC安全性

    spider提供了多重安全保障机制,目前主要支持接入握手校验,报文完整性校验,报文加密,报文长度检查四种机制. 接入认证 spider使用两次握手校验,其握手流程如下: 签名AES加密的方式实现. l ...

  8. spider RPC开发指南

    协议与兼容性 spider使用java语言开发,使用Spring作为IoC容器,采用TCP/IP协议,在此基础上,结合SaaS系统模式的特性进行针对性和重点设计,以更加灵活和高效的满足多租户系统.高可 ...

  9. spider 配置文件参考

    spider有一个配置文件spider.xml,为xml格式,spider.xml采用DTD进行管理,用于管理spider的所有特性.路由.高可用等. 配置文件支持三种不同的方式进行指定: 1. 通过 ...

  10. spider RPC性能测试报告

    测试环境部署结构 测试用例 类 别 说明 请求报文 194字节({"systemId":"PL","appVersion":"qq ...

随机推荐

  1. 《程序员代码面试指南》第五章 字符串问题 去掉字符串中连续出现k 个0 的子串

    题目 去掉字符串中连续出现k 个0 的子串 java代码 package com.lizhouwei.chapter5; /** * @Description: 去掉字符串中连续出现k 个0 的子串 ...

  2. 321list,元组,range**数字是不可迭代的!

    一.list(列表) 列表是python中的基础数据类型之一,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型.列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据, ...

  3. 剑指offer之 二维数组的查找

    package Problem3; public class Find { /* * 题目描述:二维数组中的查找 * 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下的顺序排 ...

  4. web应用组成结构,web.xml的作用

  5. Thrift文件加载

    一.简述 通过前面的分析,我们知道无论是创建一个客户端还是服务器,第一步要做的就是调用thriftpy.load对thrift文件进行解析,并在内存中构建相应的module,本文将对load方法进行一 ...

  6. 分享知识-快乐自己:Nginx概述及如何使用

    概述: 什么是 Nginx? Nginx (engine x) 是一款轻量级的 Web 服务器 .反向代理服务器及电子邮件(IMAP/POP3)代理服务器. 什么是反向代理? 反向代理(Reverse ...

  7. hdu-5650 so easy(水题)

    题目链接: so easy Time Limit: 2000/1000 MS (Java/Others)   Memory Limit: 65536/65536 K (Java/Others)Tota ...

  8. xxx was built without full bitcode" 编译错误解决

    xxx was built without full bitcode" 编译错误解决 iOS 打包上线 All object files and libraries for bitcode ...

  9. oracle rac的特征

    oracle rac的特征 1. spfile 参数文件需要被所有节点访问,需要放在共享存储上. 2. Redo ThreadRAC 环境下有多个实例,每个实例都需要有自己的一套Redo log 文件 ...

  10. Poj_1004_FinancialManagement

    一.Description Larry graduated this year and finally has a job. He's making a lot of money, but someh ...