python爬虫网页脚本_python网络爬虫之Scrapy
标签,并且这些标签都是成对出现的,开头标签为<>,结束标签为>,在这两个标签之间添加内容。通过这些标签中的相关属性可以设置页面的背景色、背景图像等。
例如,我们打开豆瓣首页,摁下键盘上的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 = """
#爬取代码
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= """
python爬虫网页脚本_python网络爬虫之Scrapy相关推荐
- python sub 不区分大小写_Python网络爬虫入门篇
1. 预备知识 学习者需要预先掌握Python的数字类型.字符串类型.分支.循环.函数.列表类型.字典类型.文件和第三方库使用等概念和编程方法. Python入门篇:https://www.cnblo ...
- python网络爬虫文献综述_python网络爬虫综述
本文主要是个人python学习过程中的碎碎念想,希望对感兴趣的童鞋有所帮助. 百度百科上网络爬虫的定义是:"网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者 ...
- python网络爬虫的特点_Python网络爬虫(一)- 入门基础
目录: 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程 ...
- python爬虫实践报告_Python网络爬虫从入门到实践
本书讲解了如何使用Python编写网络爬虫,涵盖爬虫的概念.Web基础.Chrome.Charles和Packet Capture抓包.urllib.Requests请求库.lxml.Beautifu ...
- python网络爬虫基础知识_Python网络爬虫基础知识
一.网络爬虫 网络爬虫又被称为网络蜘蛛,我们可以把互联网想象成一个蜘蛛网,每一个网站都是一个节点,我们可以使用一只蜘蛛去各个网页抓取我们想要 的资源.举一个最简单的例子,你在百度和谷歌中输入'Pyth ...
- python 爬虫热搜_Python网络爬虫之爬取微博热搜
微博热搜的爬取较为简单,我只是用了lxml和requests两个库 1.分析网页的源代码:右键--查看网页源代码. 从网页代码中可以获取到信息 (1)热搜的名字都在 的子节点里 (2)热搜的排名都在 ...
- python网络爬虫资源库名_Python网络爬虫
网友NO.524767 Python网络爬虫与信息提取(实例讲解) 课程体系结构: 1.Requests框架:自动爬取HTML页面与自动网络请求提交 2.robots.txt:网络爬虫排除标准 3.B ...
- python网络爬虫系列教程_Python网络爬虫系列教程连载 ----长期更新中,敬请关注!...
感谢大家长期对Python爱好者社区的支持,后期Python爱好者社区推出Python网络爬虫系列教程.欢迎大家关注.以下系列教程大纲,欢迎大家补充.视频长期连载更新中 --------------- ...
- python网络爬虫实验报告_Python网络爬虫实例讲解
聊一聊Python与网络爬虫. 1.爬虫的定义 爬虫:自动抓取互联网数据的程序. 2.爬虫的主要框架 爬虫程序的主要框架如上图所示,爬虫调度端通过URL管理器获取待爬取的URL链接,若URL管理器中存 ...
- java爬取网页数据_Python网络爬虫实战(二)数据解析
Python网络爬虫实战 (二)数据解析 本系列从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬,加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站 ...
最新文章
- 南岸焊接机器人厂_焊接技术的发展历史,世界焊接发展200年回顾,你了解焊接吗?...
- mysql实例管理工具巨杉_实例管理工具_操作_MySQL实例_关系型数据库实例_文档中心_SequoiaDB巨杉数据库...
- need study
- 每日一句(2014-8-26)
- cpp判断输入为数字_猜数字小程序带你C语言入门
- 交换机网络嗅探方法之欺骗交换机缓存
- H3C DHCP特点
- 非平衡电桥电阻计算_绝缘检测电桥法中的几个重要概念
- win10下驱动级套节字通信(ksocket)
- Glide4.0源码全解析(三),into()方法背后的故事
- 中断 http请求 正在加载 取消http请求
- putty怎么进入文件夹_putty命令
- c#制作仿win7屏幕键盘之笔记
- 统一监控报警平台架构设计思路
- python爬虫 网页表格
- 趣节点带您3分钟搞懂信息流广告
- 房天下APP竞品分析
- MATLAB判断是不是质数,MATLAB脚本质数的判断
- 工作流结合动态表单的工作流程
- 什么是钕铁硼渗镝渗铽技术?