python3 xpath和requests应用详解


Posted in Python onMarch 06, 2020

根据一个爬取豆瓣电影排名的小应用,来简单使用etree和request库。

etree使用xpath语法。

import requests
import ssl
from lxml import etree


ssl._create_default_https_context = ssl._create_unverified_context

session = requests.Session()
for id in range(0, 251, 25):
 URL = 'https://movie.douban.com/top250/?start=' + str(id)
 req = session.get(URL)
 # 设置网页编码格式
 req.encoding = 'utf8'
 # 将request.content 转化为 Element
 root = etree.HTML(req.content)
 # 选取 ol/li/div[@class="item"] 不管它们在文档中的位置
 items = root.xpath('//ol/li/div[@class="item"]')
 for item in items:
  # 注意可能只有中文名,没有英文名;可能没有quote简评
  rank, name, alias, rating_num, quote, url = "", "", "", "", "", ""
  try:
   url = item.xpath('./div[@class="pic"]/a/@href')[0]
   rank = item.xpath('./div[@class="pic"]/em/text()')[0]
   title = item.xpath('./div[@class="info"]//a/span[@class="title"]/text()')
   name = title[0].encode('gb2312', 'ignore').decode('gb2312')
   alias = title[1].encode('gb2312', 'ignore').decode('gb2312') if len(title) == 2 else ""
   rating_num = item.xpath('.//div[@class="bd"]//span[@class="rating_num"]/text()')[0]
   quote_tag = item.xpath('.//div[@class="bd"]//span[@class="inq"]')
   if len(quote_tag) is not 0:
    quote = quote_tag[0].text.encode('gb2312', 'ignore').decode('gb2312').replace('\xa0', '')
   # 输出 排名,评分,简介
   print(rank, rating_num, quote)
   # 输出 中文名,英文名
   print(name.encode('gb2312', 'ignore').decode('gb2312'),
     alias.encode('gb2312', 'ignore').decode('gb2312').replace('/', ','))
  except:
   print('faild!')
   pass

程序运行结果:

python3 xpath和requests应用详解

补充知识:requests抓取以及Xpath解析

代码:

# requests抓取
import requests
 
# 新浪新闻的一篇新闻的url
url = 'http://news.sina.com.cn/s/2018-05-09/doc-ihaichqz1009657.shtml'
 
res = requests.get(url)
# 查看编码方式
enconding = requests.utils.get_encodings_from_content(res.text)
#print(enconding)
 
 
# 打印网页内容
html_doc = res.content.decode("utf-8")
print(html_doc[:500])
 
# 保存网页内容
with open('test.html', 'w') as f:
 f.write(html_doc)

运行结果:

<!DOCTYPE html>
<!-- [ published at 2018-05-09 18:23:13 ] -->
<!-- LLTJ_MT:name ="澎湃新闻" -->
 
<html>
<head>
<meta charset="utf-8"/>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="sudameta" content="urlpath:s/; allCIDs:51924,257,51895,200856,56264,258,38790">
<title>小学老师罚学生赤脚跑操场 官方:将按规定处理|赤脚|学生|华龙网_新浪新闻</title>
<meta name="keywords" content="赤脚,学生,华龙网" />
<meta name="tags" content="赤脚,学生,华龙网" />
<meta name="description" content="原标题:潼南一小学体育老师罚学生赤脚跑操场续:区教委向华龙网发来情况

代码:

# xpath解析
from lxml import etree
 
# 建立html的树
tree = etree.HTML(html_doc)
 
# 设置目标路径(标题)
path_title = '/html/body//h1[@class="main-title"]//text()'
 
# 提取节点
node_title = tree.xpath(path_title)
print("===" * 20)
print(node_title[0])
 
# 设置内容路径
path_content = '//div[@class="article-content-left"]//div[@id="article"]//text()'
 
# 提取节点
node_content = tree.xpath(path_content)
print("===" * 20)
print("。".join(node_content))

运行结果:

============================================================
小学老师罚学生赤脚跑操场 官方:将按规定处理
============================================================
 
 。原标题:潼南一小学体育老师罚学生赤脚跑操场续:区教委向华龙网发来情况说明。
。
重庆客户端-华龙网5月9日消息,这两天,重庆潼南区朝阳小学二年级6班不少家长心疼不已,因为多个娃儿脚底被磨出了泡。一问才知道,是因为有些学生体育课上没穿运动鞋,被体育老师要求赤脚在操场上跑步。收到重庆网络问政平台这一投诉后,华龙网记者立即进行了调查。今(9)日,华龙网发布了。《重庆潼南一小学体育老师罚学生赤脚跑操场脚底磨出泡当地教委介入》。报道后,潼南教委高度重视并给华龙网传来官方的情况说明。。
。 。 [说明全文]。
。
关于家长在华龙网投诉教师上体育课体罚学生的情况说明。
。
潼南区朝阳小学体育教师邹老师于2018年5月7日上午上体育课时,发现该班有少部分名学生未按体育课的要求穿运动鞋。该教师认为,穿着凉鞋跑步对学生本人及他人存在安全隐患,塑胶跑道不会对学生光脚运动造成影响,于是就叫未穿运动鞋的学生,脱掉凉鞋进行随班热身跑步。当时邹老师未发现学生有异常情况,也未接到学生有异常情况的反映。后经家长反映到学校,有极少数光着脚跑步的学生有异常情况,学校庚即与部分家长进行了沟通,并及时调查了解了此事,并对该教师这种不恰当教学方法进行了批评教育,我们将按相关规定对该教师作出相应的处理。。
。
重庆市潼南区教育委员会。
。
2018年5月9日。
。  来源:华龙网。
 
。责任编辑:张义凌 。

以上这篇python3 xpath和requests应用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
编写Python脚本来获取mp3文件tag信息的教程
May 04 Python
Django应用程序中如何发送电子邮件详解
Feb 04 Python
python 禁止函数修改列表的实现方法
Aug 03 Python
Python学习之用pygal画世界地图实例
Dec 07 Python
PyQt5主窗口动态加载Widget实例代码
Feb 07 Python
python和flask中返回JSON数据的方法
Mar 26 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
Oct 15 Python
Django框架搭建的简易图书信息网站案例
May 25 Python
Python学习笔记之自定义函数用法详解
Jun 08 Python
Python基本语法之运算符功能与用法详解
Oct 22 Python
2021年的Python 时间轴和即将推出的功能详解
Jul 27 Python
python实现逻辑回归的示例
Oct 09 Python
python 装饰器功能与用法案例详解
Mar 06 #Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
Mar 06 #Python
利用 Python ElementTree 生成 xml的实例
Mar 06 #Python
Python3 xml.etree.ElementTree支持的XPath语法详解
Mar 06 #Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
Mar 06 #Python
Python yield的用法实例分析
Mar 06 #Python
用Python生成HTML表格的方法示例
Mar 06 #Python
You might like
PHP配置文件中最常用四个ini函数
2007/03/19 PHP
FleaPHP的安全设置方法
2008/09/15 PHP
php实现通过soap调用.Net的WebService asmx文件
2017/02/27 PHP
thinkPHP3.2.2框架行为扩展及demo示例
2018/06/19 PHP
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
通过Mootools 1.2来操纵HTML DOM元素
2009/09/15 Javascript
JS图片浏览组件PhotoLook的公开属性方法介绍和进阶实例代码
2010/11/09 Javascript
JS焦点图切换,上下翻转
2011/05/12 Javascript
javascript框架设计读书笔记之字符串的扩展和修复
2014/12/02 Javascript
如何让一个json文件显示在表格里【实现代码】
2016/05/09 Javascript
深入浅析jQuery对象$.html
2016/08/22 Javascript
JQuery动态添加Select的Option元素实现方法
2016/08/29 Javascript
总结AngularJS开发者最常犯的十个错误
2016/08/31 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
2017/05/17 Javascript
ES6/JavaScript使用技巧分享
2017/12/14 Javascript
jquery树形插件zTree高级使用详解
2019/08/16 jQuery
weui上传多图片,压缩,base64编码的示例代码
2020/06/22 Javascript
Vue 组件复用多次自定义参数操作
2020/07/27 Javascript
Python collections模块实例讲解
2014/04/07 Python
在RedHat系Linux上部署Python的Celery框架的教程
2015/04/07 Python
Python CSV模块使用实例
2015/04/09 Python
Python实现压缩文件夹与解压缩zip文件的方法
2018/09/01 Python
详解python分布式进程
2018/10/08 Python
Python批量修改图片分辨率的实例代码
2019/07/04 Python
python程序文件扩展名知识点详解
2020/02/27 Python
Python使用os.listdir和os.walk获取文件路径
2020/05/21 Python
python中K-means算法基础知识点
2021/01/25 Python
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
ABOUT YOU匈牙利:500个最受欢迎的时尚品牌
2019/07/19 全球购物
文明倡议书范文
2014/04/15 职场文书
工伤事故赔偿协议书(标准)
2014/09/29 职场文书
董事长岗位职责
2015/02/13 职场文书
教师思想工作总结2015
2015/05/13 职场文书
2015年机关纠风工作总结
2015/05/15 职场文书
手术室消毒隔离制度
2015/08/05 职场文书
Apache自带的ab压力测试工具的实现
2022/07/23 Servers