python爬虫--案例分析
Posted 行走在云端
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python爬虫--案例分析相关的知识,希望对你有一定的参考价值。
python爬虫常用的库:Python 库(urllib、BeautifulSoup、requests、scrapy)实现网页爬虫
python爬虫最简单案例分析: 对一个html文件进行分解,获取里面想要的数据
<html lang="en"> <head> <meta charset="UTF-8"/> <title>测试bs4</title> </head> <body> <div> <p>百里守约</p> </div> <div class="song"> <p>李清照</p> <p>王安石</p> <p>苏轼</p> <p>柳宗元</p> <a href="http://www.song.com/" title="赵匡胤" target="_self"> <span>this is span</span> 宋朝是最强大的王朝,不是军队的强大,而是经济很强大,国民都很有钱</a> <a href="" class="du">总为浮云能蔽日,长安不见使人愁</a> <img src="http://www.baidu.com/meinv.jpg" alt=""/> </div> <div class="tang"> <ul> <li><a href="http://www.baidu.com" title="qing">清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村</a></li> <li><a href="http://www.163.com" title="qin">秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山</a></li> <li><a href="http://www.126.com" alt="qi">岐王宅里寻常见,崔九堂前几度闻,正是江南好风景,落花时节又逢君</a></li> <li><a href="http://www.sina.com" class="du">杜甫</a></li> <li><a href="http://www.dudu.com" class="du">杜牧</a></li> <li><b>杜小月</b></li> <li><i>度蜜月</i></li> <li><a href="http://www.haha.com" id="feng">凤凰台上凤凰游,凤去台空江自流,吴宫花草埋幽径,晋代衣冠成古丘</a></li> </ul> </div> </body> </html>
import requests from lxml import etree tree = etree.parse("E:\\odoo14\\odoo14\\myaddons\\demo.html") # 获取html文件 tang_info = tree.xpath("//div[@class=\'tang\']/ul/li/a/text()") # 获取标签里的文本
print(\'tang_info\', tang_info) # "tang_info [\'清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村\', \'秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山\', \'岐王宅里寻常见,崔九堂前几度闻,正是江南好风景,落花时节又逢君\', \'杜甫\', \'杜牧\', \'凤凰台上凤凰游,凤去台空江自流,吴宫花草埋幽径,晋代衣冠成古丘\']" song_info = tree.xpath("//div[@class=\'song\']/p/text()") #找到div的class 是song的,标签是p的文本 print(\'song_info\', song_info) # 结果 "song_info [\'李清照\', \'王安石\', \'苏轼\', \'柳宗元\']" song_src = tree.xpath("//div[@class=\'song\']/img/@src") #找 到div的class 是song的,的img属性
print(\'song_src\', song_src) # song_src [\'http://www.baidu.com/meinv.jpg\']
song_src_a = tree.xpath("//div[@class=\'song\']/a/text()")
print(\'song_src_a\', song_src_a)
# song_src_a [\'\\n \', \'\\n 宋朝是最强大的王朝,不是军队的强大,而是经济很强大,国民都很有钱\', \'总为浮云能蔽日,长安不见使人愁\']
关于xpath路径的写法:XPath(全称XML Path Languang),即XML路径语言,是一种在XML文档中查找信息的语言。
1、/ 表示从根节点选取
2、// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
3、@ 选取属性 返回所指元素的文本内容。
4、text() 返回所指元素的文本内容
4.1、string() 函数会得到所指元素的所有节点文本内容,这些文本讲会被拼接成一个字符串。
4.3、data():data()函数和string()函数通用,而且不建议经常使用data()函数,有数据表明,该函数会影响XPath的性能。
注意:爬取内容都为数字的时候只能使用data(),不能使用text()或 string(),因为XPath不支持字符串做数学运算。
案例:song_info = tree.xpath("//div[@class=\'song\']/p/text()") #找到div的class 是song的,标签是p的文本
5.查找页面上第一个form元素://form[1]
6.查找页面上id为loginForm的form元素://form[@id=‘loginForm’]
7、/bookstore/book[1] 选取属于 bookstore 子元素的第一个 book 元素。
8、/bookstore/book[last()] 选取属于 bookstore 子元素的最后一个 book 元素。
以上是关于python爬虫--案例分析的主要内容,如果未能解决你的问题,请参考以下文章
Python爬虫腾讯视频m3u8格式分析爬取(附源码,高清无水印)