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

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

HTML文档结构.jpg

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

(2)html标签

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

html常用标签.png

html常用标签2.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 = """

需要的内容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文档中的所有文本的话,需要使用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

Learning XML

39.95

下面从几个简单的例子让大家体会一下

/bookstore/book[1] :表示选择bookstore的第一个book子元素。

/bookstore/book[last()] :表示选择bookstore的最后一个book子元素。

/bookstore/book[last()-1] :表示选择bookstore的倒数第二个book子元素。

/bookstore/book[position()<3] :表示选择bookstore的前两个book子元素。

//title[@lang] :表示选择所有具有lang属性的title节点。

//title[@lang='eng'] :表示选择所有lang属性的值等于"eng"的title节点。

二、python中能够进行网络爬虫的库

1. 安装方式

python中安装包或者模块的方式一般有以下两种:

(1)pip install xxx(xxx表示模块名字)

pip install lxml/numpy/pandas/scrapy/requests

(2)进入到python库网站下载所需模块,然后使用pip install xxx.whl安装即可

pip install lxml‑3.7.3‑cp27‑cp27m‑win_amd64.whl

2. requests

import requests

#我的简书主页

r = requests.get('http://www.jianshu.com/u/95f3a80fac3e')

# r本身是一个reponse对象,需要通过content来返回其内容

print r.content

#其实上面通过content之后得到就是一个完整的html文档,之后可以直接使用lxml等工具直接对其进行解析,下一小节会讲到lxml

print r.status_code

print r.encoding #html的编码方式,一般是UTF-8

print r.cookies

3. lxml

lxml中集成了刚才讲述的xpath这种路径查询语言;例如我们首先创建一个html文档如下

html= """

需要的内容1
需要的内容2
需要的内容3

python爬虫网页脚本_python网络爬虫之Scrapy相关推荐

  1. python sub 不区分大小写_Python网络爬虫入门篇

    1. 预备知识 学习者需要预先掌握Python的数字类型.字符串类型.分支.循环.函数.列表类型.字典类型.文件和第三方库使用等概念和编程方法. Python入门篇:https://www.cnblo ...

  2. python网络爬虫文献综述_python网络爬虫综述

    本文主要是个人python学习过程中的碎碎念想,希望对感兴趣的童鞋有所帮助. 百度百科上网络爬虫的定义是:"网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者 ...

  3. python网络爬虫的特点_Python网络爬虫(一)- 入门基础

    目录: 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程 ...

  4. python爬虫实践报告_Python网络爬虫从入门到实践

    本书讲解了如何使用Python编写网络爬虫,涵盖爬虫的概念.Web基础.Chrome.Charles和Packet Capture抓包.urllib.Requests请求库.lxml.Beautifu ...

  5. python网络爬虫基础知识_Python网络爬虫基础知识

    一.网络爬虫 网络爬虫又被称为网络蜘蛛,我们可以把互联网想象成一个蜘蛛网,每一个网站都是一个节点,我们可以使用一只蜘蛛去各个网页抓取我们想要 的资源.举一个最简单的例子,你在百度和谷歌中输入'Pyth ...

  6. python 爬虫热搜_Python网络爬虫之爬取微博热搜

    微博热搜的爬取较为简单,我只是用了lxml和requests两个库 1.分析网页的源代码:右键--查看网页源代码. 从网页代码中可以获取到信息 (1)热搜的名字都在 的子节点里 (2)热搜的排名都在 ...

  7. python网络爬虫资源库名_Python网络爬虫

    网友NO.524767 Python网络爬虫与信息提取(实例讲解) 课程体系结构: 1.Requests框架:自动爬取HTML页面与自动网络请求提交 2.robots.txt:网络爬虫排除标准 3.B ...

  8. python网络爬虫系列教程_Python网络爬虫系列教程连载 ----长期更新中,敬请关注!...

    感谢大家长期对Python爱好者社区的支持,后期Python爱好者社区推出Python网络爬虫系列教程.欢迎大家关注.以下系列教程大纲,欢迎大家补充.视频长期连载更新中 --------------- ...

  9. python网络爬虫实验报告_Python网络爬虫实例讲解

    聊一聊Python与网络爬虫. 1.爬虫的定义 爬虫:自动抓取互联网数据的程序. 2.爬虫的主要框架 爬虫程序的主要框架如上图所示,爬虫调度端通过URL管理器获取待爬取的URL链接,若URL管理器中存 ...

  10. java爬取网页数据_Python网络爬虫实战(二)数据解析

    Python网络爬虫实战 (二)数据解析 本系列从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬,加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站 ...

最新文章

  1. 南岸焊接机器人厂_焊接技术的发展历史,世界焊接发展200年回顾,你了解焊接吗?...
  2. mysql实例管理工具巨杉_实例管理工具_操作_MySQL实例_关系型数据库实例_文档中心_SequoiaDB巨杉数据库...
  3. need study
  4. 每日一句(2014-8-26)
  5. cpp判断输入为数字_猜数字小程序带你C语言入门
  6. 交换机网络嗅探方法之欺骗交换机缓存
  7. H3C DHCP特点
  8. 非平衡电桥电阻计算_绝缘检测电桥法中的几个重要概念
  9. win10下驱动级套节字通信(ksocket)
  10. Glide4.0源码全解析(三),into()方法背后的故事
  11. 中断 http请求 正在加载 取消http请求
  12. putty怎么进入文件夹_putty命令
  13. c#制作仿win7屏幕键盘之笔记
  14. 统一监控报警平台架构设计思路
  15. python爬虫 网页表格
  16. 趣节点带您3分钟搞懂信息流广告
  17. 房天下APP竞品分析
  18. MATLAB判断是不是质数,MATLAB脚本质数的判断
  19. 工作流结合动态表单的工作流程
  20. 什么是钕铁硼渗镝渗铽技术?

热门文章

  1. Markdown 4 印象笔记之马克飞象
  2. python虚拟串口_python 虚拟串口通信
  3. 如何获取到微信公众号的网址
  4. 8脚 tja1050t_CAN总线通信硬件原理图(采用TJA1050T CAN总线驱
  5. html+圆角六边形,CSS3 圆角六边形
  6. Java多线程篇--原子包、阻塞队列和并行流
  7. 华为手机有信号 打电话无服务器,华为手机信号,真有传说中那么好?
  8. ABB 机械臂的部分代码
  9. 在树莓派开发板上进行ROS开发+语音交互系统设计
  10. 2016 黑客必备的Android应用都有哪些?