002 requests的使用方法以及xpath和beautifulsoup4提取数据
1、直接使用url,没用headers的请求
import requests url = 'http://www.baidu.com'
# requests请求用get方法
response = requests.get(url) # 返回的content是字节 需要解码
data = response.content.decode()
print(data)
# 而text返回的是字符串类型
data = response.text
print(data)
只有url的代码
2、有headers的GET请求
requests的get参数,headers传入的参数是字典,不用转成字符串
import requests url = 'http://www.baidu.com'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36', }
# requests请求用get方法
response = requests.get(url, headers=headers) # 1. 获取请求头
print(response.request.headers)
# 2. 获取相应头
print(response.headers)
# 3. 获取状态码
print(response.status_code)
# 4. 请求的cookie
print(response.request._cookies)
# 5. 相应的cookie
print(response.cookies)
含有headers的代码
而 url = 'http://www.baidu.com/s?wd=你好' 中的汉字会自动转义,不需要调用其他模块
import requests url = 'http://www.baidu.com/s?wd=你好'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36',
}
# requests请求用get方法
response = requests.get(url, headers=headers) data = response.content.decode()
print(data)
在url后面直接拼接
import requests url = 'http://www.baidu.com/'
params = {
'wd': '你好',
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36',
}
# requests请求用get方法
response = requests.get(url, headers=headers, params=params) data = response.content.decode()
print(data)
运用params字典类型进行拼接url
import requests url = 'http://baidu.com'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36',
}
params = {
'wd': '你好'
}
free_proxy = {
'https': '153.232.156.201:8080',
}
# 加代理IP
response = requests.get(url, headers=headers, params=params, proxies=free_proxy) data = response.content
print(data.decode())
代理IP
3、有headers的POST请求
import requests url = 'http://iclass.ncut.edu.cn/iclass/'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36',
}
data = {
'login': '',
'password': '******',
}
# requests请求用post方法
response = requests.post(url, headers=headers, data=data) data = response.content
with open('01 登录界面.html', 'wb') as fp:
fp.write(data)
登录含有cookie的代码
4、使用xpath提取数据
import requests
from lxml import etree url = 'https://www.qiushibaike.com/text/'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36',
} response = requests.get(url, headers=headers)
data = response.content # 1. 转解析类型
xpath_data = etree.HTML(data) # 2. 调用xpath的方法
div_list = xpath_data.xpath('//div[@class="col1"]/div')
for div in div_list:
author = div.xpath('.//div[@class="author clearfix"]/a[2]/h2/text()')[0].strip('\n')
# 打印作者名
print(author)
提取作者名的代码
5、使用beautifulsoup提取信息
from bs4 import BeautifulSoup html_doc = '''
<div id="menu" class="menu-bar menu clearfix" style="margin:0 10px">
<a href="/" target="_blank" rel="nofollow">热门</a>
<a href="/hot/" target="_blank">24小时</a>
<a href="/imgrank/" target="_blank">热图</a>
<a id="highlight" href="/text/" target="_blank">文字</a>
<a href="/history/" target="_blank">穿越</a>
<a href="/pic/" target="_blank">糗图</a>
<a href="/textnew/" target="_blank">新鲜</a>
</div>
'''
# 1、转类型
soup = BeautifulSoup(html_doc, 'lxml') # 2、格式化输出
result = soup.prettify()
# print(result) # 3、取标签
print(soup.a) # 4、取文本
print(soup.a.string) # 5、取属性
print(soup.a['target'])
bu4代码
from bs4 import BeautifulSoup html_doc = '''
<div id="menu" class="menu-bar menu clearfix" style="margin:0 10px">
<a href="/" target="_blank" rel="nofollow">热门</a>
<a href="/hot/" target="_blank">24小时</a>
<a href="/imgrank/" target="_blank">热图</a>
<a id="highlight" href="/text/" target="_blank">文字</a>
<a href="/history/" target="_blank">穿越</a>
<a href="/pic/" target="_blank">糗图</a>
<a href="/textnew/" target="_blank">新鲜</a>
</div>
'''
# 1、转类型
soup = BeautifulSoup(html_doc, 'lxml') # 2、通用解析方法 # find 返回符合查询条件的第一个标签
print(soup.find(name='a'))
print(soup.find(attrs={"target": '_blank'})) # find_all 返回list(标签对象)
print(soup.find_all(name='a', limit=3)) # select_one 返回css的选中器
print(soup.select_one('.menu')) # select 返回的是list
print(soup.select('#highlight'))
print(soup.select('a[target="_blank"]'))
查找标签
6、其他常用知识点
查看response的编码格式
print(page_text.encoding)
002 requests的使用方法以及xpath和beautifulsoup4提取数据的更多相关文章
- UI自动化测试(二)浏览器操作及对元素的定位方法(xpath定位和css定位详解)
Selenium下的Webdriver工具支持FireFox(geckodriver). IE(InternetExplorerDriver).Chrome(ChromeDriver). Opera( ...
- 爬虫系列4:Requests+Xpath 爬取动态数据
爬虫系列4:Requests+Xpath 爬取动态数据 [抓取]:参考前文 爬虫系列1:https://www.cnblogs.com/yizhiamumu/p/9451093.html [分页]:参 ...
- 关于requests的session方法保持cookie的问题。
最近在做爬虫的时候遇到了一个问题,在用requests的session方法保持cookie的时候发现requests不能保持手动构建的cookie.起初以为requests只能自动保持由服务器返回的s ...
- 关于requests的session方法保持不了cookie的问题。(seesion的意思是保持一个会话,比如 登陆后继续操作(记录身份信息) 而requests是单次请求的请求,身份信息不会被记录)
最近在做爬虫的时候遇到了一个问题,在用requests的session方法保持cookie的时候发现requests不能保持手动构建的cookie.起初以为requests只能自动保持由服务器返回的s ...
- Xml中SelectSingleNode方法,xpath查找某节点用法
Xml中SelectSingleNode方法,xpath查找某节点用法 最常见的XML数据类型有:Element, Attribute,Comment, Text. Element, 指形如<N ...
- Requests库主要方法解析以及Requests库入门需要掌握的框架
Requests库主要方法解析以及Requests库入门 1.requests.request(method,url,**kwargs) **kwargs:控制访问的参数,均为可选项 params:字 ...
- python中requests库使用方法详解
目录 python中requests库使用方法详解 官方文档 什么是Requests 安装Requests库 基本的GET请求 带参数的GET请求 解析json 添加headers 基本POST请求 ...
- python requests函数封装方法
python requests函数封装方法 上代码 import requests import json """ 封装request请求, 1.post:my_pos ...
- 【个人】爬虫实践,利用xpath方式爬取数据之爬取虾米音乐排行榜
实验网站:虾米音乐排行榜 网站地址:http://www.xiami.com/chart 难度系数:★☆☆☆☆ 依赖库:request.lxml的etree (安装lxml:pip install ...
随机推荐
- 好程序员web前端分享javascript关联数组用法总结
好程序员web前端分享javascript关联数组用法总结,有需要的朋友可以参考下. Hash关联数组定义 代码如下 // 定义空数组 myhash = { } // 直接定义数组 myhash = ...
- Java设置session超时(失效)的时间
在一般系统登录后,都会设置一个当前session失效的时间,以确保在用户长时间不与服务器交互,自动退出登录,销毁session具体设置的方法有三种:1.在web容器中设置(以tomcat为例)在tom ...
- Mac下开发ASP.NET Core应用,我用FineUICore!
在 Mac 下开发 ASP.NET Core 2.0+ 应用,我用FineUICore! FineUICore:企业级 ASP.NET 控件库,10年持续更新,只为你来:http://fineui.c ...
- RabbitMQ使用时注意的一些问题
一.前言 上篇RabbitMQ的博文居然上了推荐,效果很不错,接下来我们就来聊聊我们RabbitMQ的方案,先谈方案,代码等等后面补上,感觉不错给我点点关注,点点
- 《JavaScript设计模式与开发实践》笔记第一章
第一章 面向对象的JavaScript 动态类型语言和鸭子类型 编程语言按照数据类型大体可以分为两类:静态类型语言.动态类型语言. 静态类型语言:在编译时便已确定变量的类型. 优点: 在编译时就能发现 ...
- java基础-04泛型
介绍 泛型就是数据类型的参数化表示,泛型的本质是参数化类型,常用E代表任何数据类型,在实际使用的时候把实际的数据类型传递给E. 泛型的好处是设计通用的功能,多个数据类型可以共用. 泛型类型E只能代表O ...
- plus webview关闭事件监听
plus.webview.currentWebview().addEventListener("close",function(){ },false);
- Python——汇总
一.工具类 (1)pycharm激活.中文破解 (2)pycharm的基本设置 (3)pycharm常用包和插件的安装 二.数据类型 (1)列表.元祖.字典 操作方法 (2)迭代器操作方法 (3)生成 ...
- Spring Boot 2.x 编写 RESTful API (四) 使用 Mybatis
用Spring Boot编写RESTful API 学习笔记 添加依赖 <dependency> <groupId>org.mybatis.spring.boot</gr ...
- Frame Interpolation
对于视频网站.电视厂商以及进行视频压制的用户来说,改变视频的帧率算是一个比较常见的需求.视频网站改变帧率主要是为了向不同级别的网站用户提供差异化服务:电视厂商则是以提供更好的显示效果作为电视的卖点:对 ...