系列文章目录
从零开始学习爬虫技术,欢迎大家指出我的不足和参考,也可以和我一起学习。
此为爬虫的第二篇文章,第一篇发不出去,不知道为什么。
目录
系列文章目录
前言
json 数据处理
jsonpath 解析:
简单例子
xpath使用:
? ? ? ? 基本语法:
代理ip介绍:
? ? ? ? 代理ip分类:
? ? ? ? 代理参数:
总结
前言
第一篇文章,主要介绍了基本的requests库 一些常见使用 和https .http协议 ,get post请求方法
今天我们继续深入讲解基本爬虫的一些数据解析操作。
json 数据处理
????????首先我们都知道现在网站基本上都用json 格式来存储数据,所有用python来解析json是很关键的。介绍2个函数实现python 与json 的相互转换。json与python的字典还是很相似的。
dumps | python数据转为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 好了最后写句文案了:时过境迁的伤悲,搭配快乐的宣泄。
|