赞
踩
(import requests)
requests是用于发起请求,请求的发起是使用http库向目标站点发起请求,即发送一个request。request对象是从客户端向服务器发出请求,包括用户提交的信息以及客户端的一些信息。客户端可以通过HTML表单或在网页地址后面提供参数的方法提交数据。request对象的作用是与客户端交互,收集客户端的form、cookies、超链接,或者收集服务器端的环境变量。
(header={“User-Agent”:“xxx”})
请求头中User-Agent:中如果没有user-agent客户端配置,服务器可能讲你当做一个非法用户,一般做爬虫都会加上请求头。它告诉服务器,我的设备/浏览器是什么,我从哪个页面而来。
(在浏览器中的开发者工具/F12里,如果没有内容可以Ctrl+R进行刷新)
(url='https://xxx.com/')
url='https://weibo.com/'
url地址全称是统一资源定位符,一个网页文档、一张图片、一个视频都可以用url唯一来确定。
请求响应,获取内容。requests模块发送请求时,有两种携带参数的方法,params和data。
reponse=requests.get(url,headers=header)
(params在get请求中使用,data在post请求中使用。)
- reponse.encoding=reponse.apparent_encoding
- #获取网址文本方式的相应内容
- with open('weibo.html','w',encoding=str(reponse.encoding)) as f:
- f.write(reponse.text)
(pip install lxml)
LXML库是一款高性能的Python XML库,主要用来解析以及生成xml和html文件(解析、序列化、转换等)。
(import etree from lxml)
在LXML中,lxml.etree模块是最常用的HTML、XML文档解析模块。通过requests.get方法获得html源代码后,可以通过etree进行解析,进而从源代码中提取关键信息。
(etree同Beautiful Soup一样均可以解析xml和html,两者不同之处在于:etree主要通过xpath进行定位,而Beautiful Soup主要通过css进行定位。)
selector=etree.HTML(html)
获取文本的元素内容:
(1)查询"li"标签下的所有元素
- list_all= selector.xpath('//div/ul/li')
- print(list_all)
也可以简写成以下代码
- list_short=selector.xpath('//li')
- print(list_short)
(2)查询"li"标签下的第2个元素内容
- list_2=selector.xpath('//div/ul/li[2]/a/text()')
- print(list_2)
li[2]代表的是li标签下的第二个元素,text()代表的是输出此元素的文本内容。
简写成
- list_2_short=selector.xpath('//li[2]/text()')
- print(list_2_short)
加上"_short"可以只输入元素所属的最后一个标签,其前面的标签可以省略
获取标签的文本内容:
(1)查找出已知HTML中[li]中第一个[li]标签下的a元素文本信息
- list_1=selector.xpath('//li[1]/a/text()')
- print(list_1)
也可以用以下代码获取到
- list_1_element=selector.xpath('//li[1]/a/text()')[0]
- print(list_1_element)
element类是通过获取Document上的元素,进而提取数据、遍历节点以及操作元素。这里的element是将第二个[li]标签下a元素的文本信息全部遍历输出。
[0]是指遍历后选择输出第一个获取到的文本信息
(2)通过class属性定位查找出已知html中[li]中的第三个[li]标签属性和a元素文本信息
- list_2=selector.xpath('//li[@class="line-message"]')
- print(list_2)
- list_2_element=selector.xpath('//li[@class="line-message"]/a/text()')[1]
- print(list_2_element)
"@"代表直接定位到[li]标签中class属性里带有line-message的位置
(3)通过herf属性定位查找出已知HTML中[li]中第4个标签属性及a元素的文本信息
- list_3=selector.xpath('//*/li[4]/a[@href="link4.html"]')
- print(list_3)
- list_3_element=selector.xpath('//*/li[4]/a[@href="link4.html"]/text()')[0]
- print(list_3_element)
"*"可以代写[li]标签以上级的所有标签
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。