爬虫基础 --xpath和lxml(解析网页信息)
2018-03-23 18:41
465 查看
xpath
-可以提取xml和html网页中的数据的语言xpath语法
xpath helper插件:帮助我们从”elements”中定位数据
1.选择节点(便签)
/html/head/meta :能够选中html下head下所有的meta标签
2.// :能够从任意节点开始选择
//li 表示当前所有页面中的标签
/html/head//link :head下的所有link标签
3.@符号的用途
–选择具体某个元素
//ul[@class=”toolbar”]/li :选择class=”toolbar”的ul下的li
–获取某一属性的值
a@/href:选择a的href的值
4.获取文本 text()
//div[@class=”w-header”]/span/text():获取span下的文本
5. ./xx当前节点下XX的标签
lxml
pip install lxml基本用法:
from lxml import etree
element=etree.HTML(“html字符串或者xml文本”)—element对象
element.xpath()—可以使用xpath语法获取数据
”’
实例演示–糗事百科数据抓取
import requests from lxml import etree import json #创建类 class QiubaiSpider(): #定义构造器 def __init__(self): self.url_temp="https://www.qiushibaike.com/8hr/page/{}/" #通过翻页观察规律 self.headers={ "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36" } #定义功能函数---得到url列表 #利用列表推导式及format方法 url_list =[self.url_temp.format(i) for i in range(1,14)] return url_list #定义功能函数---得到html字符串 def get_html(self,url): print("正在对 %s 发出请求" % url) res=requests.get(url,headers=self.headers) return res.content.decode() #定义功能函数---解析html字符串 def parse_html(self,html_str): #建立element对象 html=etree.HTML(html_str) #分组---便于for遍历取值 div_list=html.xpath("//div[@id='content-left']/div") content_list=[] for div in div_list: item = {} item["author_name"]=div.xpath(".//h2/text()")[0].strip() if len(div.xpath(".//h2/text()")) else None item["content"]=div.xpath(".//div[@class='content']/span/text()") item["content"]=[i.strip() for i in item["content"]] item["img"]=div.xpath(".//img[@class='illustration']/@src") #注意图片链接的完整性与三元运算符赋值操作 item["img"]="https:"+ item["img"][0] if len(div.xpath(".//img[@class='illustration']/@src")) else None content_list.append(item) return content_list #定义功能函数---保存数据 def save_content_list(self,content_list): with open("qiubai.txt","a",encoding="utf-8") as f: for content in content_list: #将python字典数据转为为json字符串 f.write(json.dumps(content,ensure_ascii=False)) f.write("\n") print("保存成功") #定义run方法---实现主要逻辑 def run(self): # 1.根据url地址规律构造url_list url_list=self.get_url_list() # 2.发送请求,获取响应 for url in url_list: html_str=self.get_html(url) # 3.提取数据 content_list=self.parse_html(html_str) # 4.保存 self.save_content_list(content_list) if __name__ == '__main__': qiubai=QiubaiSpider() qiubai.run()
相关文章推荐
- 爬虫基础 --beautifilsoup4库(解析网页信息)
- Python 爬虫 —— 网页内容解析(lxml)
- 爬虫基础--requests库(获取网页信息)
- 爬虫、网页分析解析辅助工具 Xpath-helper
- 【XPath Helper:chrome爬虫网页解析工具 Chrome插件】XPath Helper:chrome爬虫网页解析工具 Chrome插件下载_教程_安装 - 开发者插件 - Chrome插件网
- 通过scrapy shell url利用xpath解析网页(为避免反爬虫封掉IP)
- XPath Helper:chrome爬虫网页解析工具 Chrome插件
- [置顶] [Java爬虫] 使用 Xpath + HtmlUnit 爬取网页基本信息
- 2.2 Xpath-helper (chrome插件) 爬虫、网页分析解析辅助工具
- python 爬虫(xpath解析网页,下载照片)
- 爬虫、网页分析解析辅助工具 Xpath-helper
- Python3爬虫之二网页解析【爬取自己CSDN博客信息】
- 爬虫基础---urllib库的使用(获取网页信息)
- 爬虫、网页分析解析辅助工具 Xpath-helper
- 爬虫、网页分析解析辅助工具 Xpath-helper
- 爬虫、网页分析解析辅助工具 Xpath-helper
- 爬虫基础 ---- 正则、xpath、lxml
- XPath Helper:chrome爬虫网页解析工具 Chrome插件图文教程
- Python爬虫基础之XPath语法与lxml库的用法详解
- Python写爬虫——抓取网页并解析HTML