python全系列之爬虫scrapy_python网络爬虫之Scrapy

本文分享的大体框架包含以下三部分(1)首先介绍html网页,用来解析html网页的工具xpath

(2)介绍python中能够进行网络爬虫的库(requests,lxml,scrapy等)

(3)从四个案例出发有易到难依次介绍scrapy集成爬虫框架

下面开始对三部分内容逐一开始介绍。

一、html和xpath说明

1. html

超文本标记语言,是用来描述网页的一种语言。主要用于控制数据的显示和外观。HTML文档一定意义上可以被称为网页。但反过来说网页不仅仅是HTML,网页本质有三部分构成:负责内容结构的HTML,负责表现的CSS,以及负责行为的javascript。本文主要分享的是最核心的内容结构部分。

(1)html结构

完整的HTML文件至少包括标签、

标签、标签和标签,并且这些标签都是成对出现的,开头标签为<>,结束标签为>,在这两个标签之间添加内容。通过这些标签中的相关属性可以设置页面的背景色、背景图像等。

例如,我们打开豆瓣首页,摁下键盘上的F12键,打开浏览器自带“开发者工具”,可以看到一个完整的html文档结构,如下图

 HTML文档结构.jpg

从上图可以看出,一个完整的html文档主要包含三部分:DTD文档头,head头部信息和body正文信息。其中DTD文档头用来告诉浏览器执行标准是什么(比如html4或是html5),head头部信息用来说明浏览器的编码方式和文档头名称,body顾名思义就是浏览器的正文部分。

(2)html标签

作为开始和结束的标记,由尖括号包围的关键词,比如 ,标签对中的第一个标签是开始标签,第二个标签是结束标签。html中常见标签如下:

 html常用标签.png    

其中, “< ul >< li >”是一种嵌套顺序,无序列表,成对出现;li的父元素必须是ul或者ol,不同之处在于ol是一种有序列列表,而ul是无序列表;

(3)html属性

属性是用来修饰标签的,放在开始标签里里面,html中常见四大属性:属性说明class规定元素的类名,大多数时候用于指定样式表中的类

id唯一标识一个元素的属性,在html里面必须是唯一的

href指定超链接目标的url

src指定图像的url

2. xpath

(1)xpath定义

是一种路径查询语言,简单的说就是利用一个路径表达式从html文档中找到我们需要的数据位置,进而将其写入到本地或者数据库中。(可以将xpath类比为sql结构化查询语言)

(2)xpath常见使用方法符号功能//表示在整个文本中查找,是一种相对路径

/表示则表示从根节点开始查找,是一种绝对路径

text()找出文本值

@找出标签对应的属性值,比如@href就是找出对应的href链接

.表示当前节点

..表示当前节点的父节点

当然xpath除了上述常见用法外,还存两种比较特殊的用法:以相同的字符开头;标签套标签。用法1:以相同的字符开头:starts-with(@属性部分,属性字符相同部分用法2:标签套标签:string(.)#以相同的字符开头 #比如我们想同时提取到下列html中三条文本内容的话,就需要使用starts-with方法 html1 = """ html>   

                   
需要的内容1
     
需要的内容2
     
需要的内容3
    #爬取代码 from lxml import etree selector = etree.HTML(html1) content  = selector.xpath('//div[starts-with(@id,"test")]/text()') for each in content:     print each

还有一种是标签套标签形式,参考如下例子html2 = """ html>   

                   
     我左青龙,                       右白虎             
  • 上朱雀,                 
  • 下玄武,             
                  龙头在胸口     
    """ #如果我们想爬取的内容是html文档中的所有文本的话,需要使用string方法进行提取 selector2 = etree.HTML(html2) content2  = selector2.xpath('//div[@id="test3"]')[0] #列表,只有一个元素 info = content2.xpath('string(.)') content3 = info.replace('\n','').replace(' ','') print content3

(3)xpath的谓语结构该小节参考资料:阮一峰的网络日志

所谓"谓语条件",就是对路径表达式的附加条件。所有的条件,都写在方括号"[]"中,表示对节点进行进一步的筛选。例如:<?xml  version="1.0" encoding="ISO-8859-1"?>         Harry Potter     29.99        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值