栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python(IT峰)笔记14-爬虫实战、认识爬虫,安装request库,发送get请求,请求头,post请求,cookie,session,xpath,xpath解析html,xpath常用规则

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python(IT峰)笔记14-爬虫实战、认识爬虫,安装request库,发送get请求,请求头,post请求,cookie,session,xpath,xpath解析html,xpath常用规则

结果
根目录下生成test.html

6、requests的post请求
import requests
#定义请求的url
url https://fanyi.baidu.com/sug 
#定义请求头信息
headers {
 user-agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 
#post发送的数据
data { kw : 你好 }
#发送请求
res requests.post(url url,headers headers,data data)
#接受返回数据
code res.status_code
print(code)#200
if code 200:
 print( 请求成功 )
 data res.json()
 if data[ errno ] 0:
 print( 响应成功 )
 print(data[ data ][0][ k ])
 value data[ data ][0][ v ]
 print(value.split( ).pop())
 #print(res.text)#使用文本解析rest结果
 print(res.json())#使用json方式解析#{ errno : 0, data: [{ k : 你好 , v : hello; hi; How do you do! }, { k : 你好吗 , v : How do you do? }, { k : 你好 陌生人 , v : [电影]Hello Stranger }]}

结果
200
请求成功
响应成功
你好
How do you do!
{‘errno’: 0, ‘data’: [{‘k’: ‘你好’, ‘v’: ‘hello; hi; How do you do!’}, {‘k’: ‘你好吗’, ‘v’: ‘How do you do?’}, {‘k’: ‘你好 陌生人’, ‘v’: ‘[电影]Hello Stranger’}]}

7、requests中携带cookie信息

地址有有问题 报错 不过看headers里添加cookie代码就好

import requests
#定义请求的url
url https://lmonkey.com/ 
#定义请求头信息
headers {
 user-agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 ,
 cookie : UM_distinctid 17c1fbab167af2-013fbad84c2a8f-4343363-1fa400-17c1fbab168b7b; CNZZDATA1277679765 2066258434-1632613844-|1632613844; documentTitle 学习猿地 - IT培训|Java培训|Python培训|ui设计培训|web前端培训|GO培训|PHP培训|成就自己的只需一套精品; documentIcon https://ccidcdn.wkjc.cn/Fq0R3EQY3U0DdfsdTj-7owTVWsCZ.png; fromPath loginWxConfig registerConfig href https://www.lmonkey.com/; accessId ad8e1ca0-2091-11ea-af9d-6523a0f144a7; authToken oUw2sxLAughXiHJhM6jqFeyB78PrM80KLVjjNjmf7bw; qimo_seosource_ad8e1ca0-2091-11ea-af9d-6523a0f144a7 qimo_seokeywords_ad8e1ca0-2091-11ea-af9d-6523a0f144a7 qimo_xstKeywords_ad8e1ca0-2091-11ea-af9d-6523a0f144a7 pageViewNum userToken eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvYXBpLmxtb25rZXkuY29tXC9hcGlcL3dlY2hhdF9sb2dpbl9jaGVjayIsImlhdCI6MTYzMjYyNDU5MiwiZXhwIjo3NjMyNjI0NTMyLCJuYmYiOjE2MzI2MjQ1OTIsImp0aSI6Ilc1dmd6aUFaZE5QQjJmbmgiLCJzdWIiOjc1MTAxLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.LZ_Muxfgss-aBzbO_CiGp6KQ4EgQ7E-43TQHkW6CA9I 
#发送get请求
res requests.get(url url,headers headers)
#接受返回数据
code res.status_code
print(code)#200
if code 200:
 with open( ./test1.html , w ,encoding utf-8 ) as fp:
 fp.write(res.text)
8、requests库中的session方法

requests.session()

9、安装Xpath

pip install lxml
使用xpath模块
from lxml import etree

关于在windows版本pycharm的pip最新版本使用的问题

10、Xpath解析html

xpath其实就是解析路径 有点像bom。类似jquery。获取html的节点及操作html节点

1、第一种方式 直接在python代码中解析html字符串
from lxml import etree
text 
 !DOCTYPE html 
 head 
 meta charset UTF-8 
 title 这是我的标题 /title 
 /head 
 body 
 div class grandfather 
 div class father 
 div class son 
 li 这是我的第一条新闻 /li 
 li 这是我的第二条新闻 /li 
 li 这是我的第三条新闻 /li 
 /ul 
 /div 
 div class anotherson 
 li 还是你的第一条资讯 /li 
 li 还是你的第二条资讯 /li 
 li 还是你的第三条资讯 /li 
 /ol 
 /div 
 div class oneson 
 li a href http://www.baidu.com 我的第一条链接 /a /li 
 li a href http://www.sina.com.cn 我的第二条链接 /a /li 
 li a href http://www.sohu.com 我的第三条链接 /a /li 
 /ul 
 /div 
 /div 
 /div 
 li 每条资讯都是独一无二的 /li 
 li 这条资讯不会觉得似曾相识 /li 
 li 条条资讯未必都能通向知识大门 /li 
 /ul 
 /body 
#使用etree解析html字符串
html etree.HTML(text)
#print(html)# Element html at 0x3198988 
#提取数据
res html.xpath( /html/body/ul/li/text() )#[ 每条资讯都是独一无二的 , 这条资讯不会觉得似曾相识 , 条条资讯未必都能通向知识大门 ]
print(res)
#使用了下标 这里下标从1开始
res html.xpath( /html/body/div/div/div/ul/li[1]/a/text() )
print(res)#[ 我的第一条链接 ]
2、第二种方式 读取一个html文件并解析
根目录下创建myhtml.html
from lxml import etree
#使用etree解析html文件
html etree.parse( ./myhtml.html ,etree.HTMLParser())
print(html)# lxml.etree._ElementTree object at 0x034FB388 
#提取数据
res html.xpath( /html/body/ul/li/text() )
print(res)#[ 每条资讯都是独一无二的 , 这条资讯不会觉得似曾相识 , 条条资讯未必都能通向知识大门 ]
11、Xpath常用规则

1、使用//
from lxml import etree
#使用etree解析html文件
html etree.parse( ./myhtml.html ,etree.HTMLParser())
print(html)# lxml.etree._ElementTree object at 0x034FB388 
#提取数据 把所有的li找出来
res html.xpath( //li/text() )
print(res)#[ 这是我的第一条新闻 , 这是我的第二条新闻 , 这是我的第三条新闻 , 还是你的第一条资讯 , 还是你的第二条资讯 , 还是你的第三条资讯 , 每条资讯都是独一无二的 , 这条资讯不会觉得似曾相识 , 条条资讯未必都能通向知识大门 ]
2、获取指定标签的数据
使用标签名[ class “类名”]来获取标签
使用 属性名来获取标签的属性
#使用etree解析html文件
html etree.HTML(text)
print(html)#
#提取数据 把指定标签的li找出来
res html.xpath( //div[ class son ]/ul/li/text() )
print(res)#[ 这是我的第一条新闻 , 这是我的第二条新闻 , 这是我的第三条新闻 ]
#提取数据 把指定标签的指定属性找出来
res html.xpath( //div[ class oneson ]/ul/li/a/ href )
print(res)#[ http://www.baidu.com , http://www.sina.com.cn , http://www.sohu.com ]
3、解析多类名标签的数据
from lxml import etree
text 
 !DOCTYPE html 
 head 
 meta charset UTF-8 
 title 这是我的标题 /title 
 /head 
 body 
 div class grandfather 
 div class father 
 div class son 
 li 这是我的第一条新闻 /li 
 li 这是我的第二条新闻 /li 
 li 这是我的第三条新闻 /li 
 /ul 
 /div 
 div class anotherson info 
 li a href http://www.csdn.com 还是你的第一条资讯 /li 
 li a href http://www.tencent.com 还是你的第二条资讯 /li 
 li 还是你的第三条资讯 /li 
 /ol 
 /div 
 div class oneson 
 li a href http://www.baidu.com 我的第一条链接 /a /li 
 li a href http://www.sina.com.cn 我的第二条链接 /a /li 
 li a href http://www.sohu.com 我的第三条链接 /a /li 
 /ul 
 /div 
 /div 
 /div 
 li 每条资讯都是独一无二的 /li 
 li 这条资讯不会觉得似曾相识 /li 
 li 条条资讯未必都能通向知识大门 /li 
 /ul 
 /body 
#使用etree解析html文件
html etree.HTML(text)
print(html)# Element html at 0x578988 
#解析多类名标签的数据
res html.xpath( //div[contains( class, info )]/ol/li/a/ href )
print(res)#[ http://www.csdn.com , http://www.tencent.com ]
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/268323.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号