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提取数据的更多相关文章

  1. UI自动化测试(二)浏览器操作及对元素的定位方法(xpath定位和css定位详解)

    Selenium下的Webdriver工具支持FireFox(geckodriver). IE(InternetExplorerDriver).Chrome(ChromeDriver). Opera( ...

  2. 爬虫系列4:Requests+Xpath 爬取动态数据

    爬虫系列4:Requests+Xpath 爬取动态数据 [抓取]:参考前文 爬虫系列1:https://www.cnblogs.com/yizhiamumu/p/9451093.html [分页]:参 ...

  3. 关于requests的session方法保持cookie的问题。

    最近在做爬虫的时候遇到了一个问题,在用requests的session方法保持cookie的时候发现requests不能保持手动构建的cookie.起初以为requests只能自动保持由服务器返回的s ...

  4. 关于requests的session方法保持不了cookie的问题。(seesion的意思是保持一个会话,比如 登陆后继续操作(记录身份信息) 而requests是单次请求的请求,身份信息不会被记录)

    最近在做爬虫的时候遇到了一个问题,在用requests的session方法保持cookie的时候发现requests不能保持手动构建的cookie.起初以为requests只能自动保持由服务器返回的s ...

  5. Xml中SelectSingleNode方法,xpath查找某节点用法

    Xml中SelectSingleNode方法,xpath查找某节点用法 最常见的XML数据类型有:Element, Attribute,Comment, Text. Element, 指形如<N ...

  6. Requests库主要方法解析以及Requests库入门需要掌握的框架

    Requests库主要方法解析以及Requests库入门 1.requests.request(method,url,**kwargs) **kwargs:控制访问的参数,均为可选项 params:字 ...

  7. python中requests库使用方法详解

    目录 python中requests库使用方法详解 官方文档 什么是Requests 安装Requests库 基本的GET请求 带参数的GET请求 解析json 添加headers 基本POST请求 ...

  8. python requests函数封装方法

    python  requests函数封装方法 上代码 import requests import json """ 封装request请求, 1.post:my_pos ...

  9. 【个人】爬虫实践,利用xpath方式爬取数据之爬取虾米音乐排行榜

    实验网站:虾米音乐排行榜 网站地址:http://www.xiami.com/chart  难度系数:★☆☆☆☆ 依赖库:request.lxml的etree (安装lxml:pip install ...

随机推荐

  1. 利用Python爬取网页图片

    最近几天,研究了一下一直很好奇的爬虫算法.这里写一下最近几天的点点心得.下面进入正文: 你可能需要的工作环境: Python 3.6官网下载 我们这里以sogou作为爬取的对象. 首先我们进入搜狗图片 ...

  2. Kubernetes 网络排错指南

    本文介绍各种常见的网络问题以及排错方法,包括 Pod 访问异常.Service 访问异常以及网络安全策略异常等. 说到 Kubernetes 的网络,其实无非就是以下三种情况之一 Pod 访问容器外部 ...

  3. Riemann流形上的梯度,散度与Laplace算子

    今天(准确地说是昨天)被学物理的同学问到Stokes定理,想起来我还有一个知道但没有细看的东西,下面整理成提示完整的习题记录一下. 这部分内容将会加进几何学观止,敬请期待.目前正在纂写代数几何簇的部分 ...

  4. 关于spring boot中 EmbeddedServletContainerCustomizer

    EmbeddedServletContainerCustomizer这个在spring boot2.X的版本中就不再提供支持了貌似2.0版本还能用 ,用来提供对异常的处理.在支持EmbeddedSer ...

  5. 【c语言】分配内存与释放内存

    提示:现在内存区定出一片相当大的连续空间(如1000字节).然后开辟与释放都在此空间进行.假设指针变量p原已指向未用空间的开头,调用alloc(n)后,开辟了n个字节可供程序适使用.现在需要使 p的值 ...

  6. Django(五)母版继承、Cookie、视图装饰器等

    大纲 一.内容回顾 补充:默认值 补充:命名空间 二.模板语言 1.母版继承 2.include 3.自定义simple_tag 三.Cookie Cookie 使用总结 四.视图 1.获取用户请求相 ...

  7. 一次单体测试的采坑--MatcherAssert.assertThat---org.hamcrest 和org.mockito

    单体测试测试环境ci上报这个错, 本地没问题. org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object;Lorg/hamcrest/Descri ...

  8. js 实现数据结构 -- 集合

    原文: 在Javascript 中学习数据结构与算法. 概念: 即数学中的集合,在计算机科学中被应用成数据结构. 当然,集合中的数据具有不重复的特性.js 集合的原理大致上是 Object 的键值对 ...

  9. App自动化(1)--Appium-Android环境搭建

    本次笔记记录Appium-Android环境搭建,主要实现在windows上通过python编写脚本来实现模拟器上安装的app自动化测试. 主要步骤:安装node.js,配置JDK环境,配置Andro ...

  10. ACM在线模板

    转载自:https://blog.csdn.net/f_zyj/article/details/51594851 Index 分类细则 说起分类准则,我也是很头疼,毕竟对于很多算法,他并不是单调的,而 ...