python爬虫学习(2)xpath ,jsonpath ,代理ip,运用

系列文章目录


从零开始学习爬虫技术,欢迎大家指出我的不足和参考,也可以和我一起学习。

此为爬虫的第二篇文章,第一篇发不出去,不知道为什么。


目录

系列文章目录

前言

json 数据处理

jsonpath 解析:

简单例子

xpath使用:

        基本语法:

代理ip介绍:

        代理ip分类:

        代理参数:

总结


前言

第一篇文章,主要介绍了基本的requests库 一些常见使用 和https .http协议 ,get post请求方法

今天我们继续深入讲解基本爬虫的一些数据解析操作。


json 数据处理


        首先我们都知道现在网站基本上都用json 格式来存储数据,所有用python来解析json是很关键的。介绍2个函数实现python 与json 的相互转换。json与python的字典还是很相似的。

dumpspython数据转为json 用法 json.dumps('dict',ensure_ascii=False)
loads

json数据转为python dict

dict=json.loads(text)

dumps函数有中文时,则不用用ASCIL编码 参数要改为flase,需要import json 内置包

jsonpath 解析:


        这个算一个坑,以后填上没学多少内容就知道一点。以后补上去

# 提取方法
# ret = jsonpath(a,'jsonpath语法规则字符串')
# $ 根节点 @ 线性节点 ..选择所有 .去子节点 * 匹配的,[] ?() 过滤操作

简单例子

from  jsonpath import  jsonpath
import json
new = json.loads(res.text)
# 利用jsonpath 获取全部程序名
city = jsonpath(new,'$..name')
city2 = jsonpath(new,'$..F[*].name')

xpath使用:


        基本语法:

# xpath 语法
#     nodename 选中该元素
#     /从根节点选取
#     // 从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置
#     .选取当前节点
#     ..选取当前节点的父节点
#     @选取属性
#     text()选取文本

        案例使用:

        先要移入lxml库中的etree函数转换文本为html

from  lxml import etree
text = '''
	<ul>
				<li><a href="javascript:;"><img src="img/1.jpg" alt="" />5</a></li>
				<li><a href="javascript:;"><img src="img/2.jpg" alt="" />4</a></li>
				<li><a href="javascript:;"><img src="img/3.jpg" alt="" />3</a></li>
				<li><a href="javascript:;"><img src="img/4.jpg" alt="" />2</a></li>
				<li class ='jingda'><a href="javascript:;"><img src="img/5.jpg" alt="" />1</a></li>
	</ul>
'''
# 获取文本数据
html = etree.HTML(text)
title = html.xpath('//li/a/text()') #得到A标签里的数据
class1 = html.xpath('//li[@class="jingda"]/a/text()')#得到类名为Jingda A标签里的数据
print(title)
print(class1)
href = html.xpath('//li/a/@href')#获取a属性值
print(href)

一直打开开发者工具直接复制路径,我电脑有问题,所有手写了xpath语法,谷歌可以转个xpath helper

代理ip介绍:


        代理ip分类:

                代理ip 是一个ip 指向代理服务器,代理服务器能向目标服务器转发请求 

        正向代理 与反向代理 正向代理: 给客户端代理,让服务器不知道客户端的真实身份 

        反方代理: 给服务器代理,让浏览器不知道服务器的真实地址

        透明代理:服务器知道使用了代理ip,也知道真实ip

        匿名代理:服务器知道使用了代理ip,不知道真实ip

        高匿代理:服务器既不能检测代理ip,也不知道真实ip

        代理参数:

import requests
# proxies = {
#     # ip地址和端口号
#     # 'http':'http://12.34.56.79:9527'
#     # ,'https':'https://12.34.56.79:9527'
# 'https':"https://www.bilibili.com/"
# }

        实用案例:

# proxies = {
#     #协议  ip地址
#     'http':'27.208.137.49:8060'
# }
# res = requests.get(url,headers=headers,proxies=proxies)
# print(res.content.decode())# 无效返回异常;有效会显示ip地址

可以百度免费的代理ip ,直接使用就好了,如果代理ip 无效的话会使用本机真实ip。


总结

        本文还有豆瓣案例我将在下篇文章和腾讯课堂案例,多个案例一起写出来本文就不再叙述。

ok发一下今天的进度图,还差一点就学完了上,还有中和下,今天学习时间应该也有3小时左右,

自我感觉还是很好的,不过电脑浏览器不知道怎么了复制不了xpath 路径所以都是自己写的,有点小菜,今天的内容还算简单,爬虫正在入门。ok 好了最后写句文案了:时过境迁的伤悲,搭配快乐的宣泄。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值