安装:pip install lxml


实例化一个etree对象

from lxml import etree
  • 1、将本地的html文档中的源码数据加载到etree对象中
etree.parse(filePath)
  • 2、可以将从互联网上获取的源码数据加载到该对象中
page_text = requests.get(url, headers=headers).textetree.HTML('page_text')

xpath表达式

  • /:表示的是从根节点开始定位,表示的是一个层级。
tree = etree.parse('test.html') # 加载 html 文件tree.xpath('/html/body/div') # 获取 body 中的 div
  • //:表示的是多个层级。可以表示从任意位置开始定位。
tree = etree.parse('test.html')tree.xpath('/html//div') # 获取 body 中的 divtree.xpath('//div') # 获取 body 中的 div
  • 属性定位
//tag[@attrName="attrVaLue"]tree = etree.parse('test.html')tree.xpath('//div[@class="song"]')  # 获取 body 中 class=“song” 的 div
  • 索引定位
//div[@class=" song"]/p[3]  # 索引是从1开始的。tree = etree.parse('test.html')tree.xpath('//div[@class="song"]//li[5]/a/text()')tree.xpath('//li[7]//text()') # 获取第七个 li 标签中的所有文本
  • 获取标签之间的文本
/text()  # 获取的是标签中直系的文本内容
//text()  # 标签中非直系的文本内容(所有的文本内容)tree = etree.parse('test.html')tree.xpath('//div[@class="song"]//li[5]/a/text()')tree.xpath('//li[7]//text()')
  • 获取属性
/@attrNametree = etree.parse('test.html')tree.xpath('//div[@class="song"]/img/@src') # 获取 img 的 src 属性

二手房名称

  • 爬取 58同城 北京在售二手房名称
  • 爬取链接:https://bj.58.com/ershoufang/
from lxml import etree
import requestsif __name__ == '__main__':url = 'https://bj.58.com/ershoufang/'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}page_text = requests.get(url, headers=headers).texttree = etree.HTML(page_text)li_list = tree.xpath('//ul[@class="house-list-wrap"]/li')fp = open('二手房名称.text', 'w', encoding='utf-8')for li in li_list:# 局部解析title = li.xpath('./div[2]/h2/a/text()')[0]print(title)fp.write(title + '\n')print('数据爬取结束!')

小姐姐

  • 爬取 彼岸图网 的小姐姐图片
  • 爬取链接:http://pic.netbian.com/4kmeinv/
from lxml import etree
import requests
import osif __name__ == '__main__':url = 'http://pic.netbian.com/4kmeinv/'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}response = requests.get(url, headers=headers)# 手动设置响应数据的编码格式# response.encoding='utf-8'page_text = response.texttree = etree.HTML(page_text)li_list = tree.xpath('//div[@class="slist"]/ul/li')if not os.path.exists('./彼岸图网'):os.mkdir('./彼岸图网')for li in li_list:img_src = 'http://pic.netbian.com' + li.xpath('./a/img/@src')[0]img_name = li.xpath('./a/img/@alt')[0] + '.jpg'# 通用处理中文乱码的解决方案img_name = img_name.encode('iso-8859-1').decode('gbk')img_data = requests.get(img_src, headers=headers).contentimg_path = './彼岸图网/' + img_namewith open(img_path, 'wb') as fp:fp.write(img_data)print(img_name, '爬取成功!')print('数据爬取结束!')

城市名

  • 爬取所有城市名
  • 爬取链接:https://www.aqistudy.cn/historydata/
from lxml import etree
import requestsif __name__ == '__main__':url = 'https://www.aqistudy.cn/historydata/'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}response = requests.get(url, headers=headers)page_text = response.texttree = etree.HTML(page_text)# 解析热门城市,所有对应城市的 a 标签# //div[@class="bottom"]/ul/li/    热门城市 a 标签的层级关系# //div[@class="bottom"]/ul/div[2]/li/a   热门城市 a 标签的层级关系a_list = tree.xpath('//div[@class="bottom"]/ul/li/a | //div[@class="bottom"]/ul/div[2]/li/a')all_city_name = []for a in a_list:city_name = a.xpath('./text()')[0]all_city_name.append(city_name)print(len(all_city_name), '\n', all_city_name)print('数据爬取结束!')

来源:爬虫开发入门丨老男孩IT教育


[ Python ] 爬虫类库学习之 xpath,爬取彼岸图网的 小姐姐 图片相关推荐

  1. Python爬虫利用18行代码爬取虎牙上百张小姐姐图片

    Python爬虫利用18行代码爬取虎牙上百张小姐姐图片 下面开始上代码 需要用到的库 import request #页面请求 import time #用于时间延迟 import re #正则表达式 ...

  2. 爬取彼岸图网4k图片

    爬取彼岸图网高清美女图片 代码如下

  3. Python网络爬虫8 - 爬取彼岸图网美图

    彼岸图网收集了大量美图,是个不错的爬取对象.话不多说,直接上图. 分析站点 分类列表 爬取之前,自然要分析一波,这个站点的框架比较简单,从分类着手,共包含12个分类项. 4K人物 4K动漫 4K动物 ...

  4. Python新手爬虫训练小项目《爬取彼岸图网》(超详细讲解版)

    Python新手爬虫训练小项目<爬取彼岸图网>(超详细讲解版) 这是我的第一篇文章,作为一名新手爬虫,这个算是我这几天来的努力成果,虽然代码寥寥几行但花费了大半天,新手上路还是不能只看视频 ...

  5. python爬虫爬取彼岸图网图片

    python爬虫爬取彼岸图网图片 话不多说,直接上代码! import requests from PIL import Image from io import BytesIO import re ...

  6. 用Python爬取彼岸图网图片

     用Python爬取彼岸图网图片 *使用了  四个模块 import time import requests from lxml import etree import os 没有的话自行百度安装. ...

  7. 【Python】爬虫(Xpath):批量爬取彼岸图网4K图(非真正4K)

    因为真正的4K图需要登录,并且登录后一天也就只能下载一张,所以就只解析爬取了内容页的高清图片(1200*633左右) 代码实现了我目前所能想到的用户骚操作的判定,例如选择的类目不在这个网站内, 或者这 ...

  8. python爬取贴吧所有帖子-Python爬虫实例(一)爬取百度贴吧帖子中的图片

    程序功能说明:爬取百度贴吧帖子中的图片,用户输入贴吧名称和要爬取的起始和终止页数即可进行爬取. 思路分析: 一.指定贴吧url的获取 例如我们进入秦时明月吧,提取并分析其有效url如下 ?后面为查询字 ...

  9. 【爬虫】关于爬取彼岸图网4K壁纸的分析

    目标地址 网络绝大部分所爬取的壁纸URL类似这样: https://pic.netbian.com/uploads/allimg/180315/110404-1521083044b19d.jpg 然而 ...

最新文章

  1. python使用matplotlib可视化堆叠的直方图(stacked histogram plot)、多个类别的数据在直方图区间层面累积堆叠起来
  2. vue的路由与es6的import, export
  3. CxImage图像处理类库说明3(转载)
  4. ZYNQ UARTLite接收不定长数据
  5. UVA 1329——Corporative Network
  6. java web快速入门_Web安全快速入门
  7. C语言scanf跳出循环的问题
  8. LeetCode Count of Smaller Numbers After Self
  9. 天行数据API智能机器人接口
  10. Linux部署东方通TongWeb7
  11. JavaScript---轮播图片完整代码
  12. seaborn关联图表之折线图和散点图
  13. STM32MP157移植Qt5.12.10
  14. 06-适配器模式Quarkus实现
  15. HDU 6438-Buy and Resell
  16. 解决CSDN上传资源出现报错:“该资源已存在,请重新上传”
  17. Conflux CTO伍鸣博士应邀出席金色沙龙
  18. Mac电脑如何实现Word一键转PPT
  19. 写一封给36岁沈阳出生女性名字叫植瑶的人一封情书
  20. 【CC】| 创建三维模型教程

热门文章

  1. Sql有条件的插入语句
  2. java计算机毕业设计基于安卓Android/微信小程序的游泳馆管理系统APP
  3. 海思平台项目经验总结
  4. 英语不好,可以进外企吗?
  5. 服务器被打了之后怎么办?
  6. pest分析和swot分析的区别
  7. Internet Download Manager v6.41.3中文特别版IDM下载器免费下载
  8. java括号用法_Java双括弧使用技巧
  9. KubeEdge SIG AI发布首个分布式协同AI Benchmark调研
  10. Android开发实现上一页,下一页显示内容