requests

  • python基于http协议进行网络请求的的三方库
import requests

发送请求

  • requests.get(url, *, headers, params, proxies) - 发送get请求

  • requests.post(url, *, headers, params, proxies) - 发送post请求

  • 参数:

    • url - 请求地址(一个网站的网址、接口地址、图片地址等)
    • headers - 设置请求头(设置cookie和User-Agent的时候使用)
    • params - 设置参数
    • proxies - 设置代理
# 1.1 发送get请求,参数直接拼接到url中
requests.get('www.xxx.com?key=1234567890&num=10')# 1.2 参数放在params参数中
params = {'key': '1234567890','num': '10'
}
requests.get('www.xxx.com',params=params)
requests.post('www.xxx.com', params=params)

添加请求头

添加User-Agent

header = {'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 Edg/92.0.902.67'}
response = requests.get('https://www.51job.com', headers=header)
response.encoding = 'gbk'
print(response.text)

添加cooike

header = {'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 Edg/92.0.902.67','cookie':'_zap'
}
response = requests.get('https://www.zhihu.com', headers=header)
print(response.text)

获取响应信息

response = requests.get('http://www.yingjiesheng.com/')  # 获取网页对象

设置编码方式(乱码的时候才需要设置)

response.encoding = 'GBK'  # 设置编码方式

获取响应头

head = response.headers  # 获取响应头
# print(head)

获取响应体

获取text值

  • 用于请求网页,拿到网页源代码
res_text = response.text
# print(res_text)

获取json解析结果

  • 用于返回json数据的数据接口
res_json = response.json()
# print(res_json)

获取content值

  • 获取二进制类型的原数据,用于图片、视频、音频的下载
res_con = response.content
# print(res_con)

json解析

# 今日头条json数据接口获取数据
url = 'https://www.toutiao.com/hot-event/hot-board/?origin=toutiao_pc&_signature=_02B4Z6wo00d01lV7XNAAAIDC1XmmkccfxtZVX1hAAPRc4q1lffyoHnSH6QUjeMpESOysibusQzMT4SFKQRYqPcysxXX0rosf5v95jp--h4Twooxn1Q7PvJH1hggqpvwVxGkcisci55B1y4d-13'
response = requests.get(f'{url}')
res_json = response.json()['data']
for news in res_json:print(news['Title'])

图片下载

def download_image(img_url):# 请求网络图片数据response = requests.get(img_url)# 获取数据data = response.content# 保存数据到本地文件f = open(f'files/{img_url.split("/")[-1].split("!")[0]}', 'wb')f.write(data)print('下载完成!')if __name__ == '__main__':response = requests.get('https://www.58pic.com/tupian/qixi-0-0.html')result = findall(r'(?s)<img src="(\S+?)">', response.text)for x in result:download_image(f'https:{x}')

千图网图片获取

from re import findall
import requestsdef download_image(img_url):# 请求网络图片数据response = requests.get(img_url)# 获取数据data = response.content# 保存数据到本地文件f = open(f'files/{img_url.split("/")[-1]}', 'wb')if __name__ == '__main__':url = ''regular = r''response = requests.get(url)result = findall(regular, response.text)

bs4的使用

from bs4 import BeautifulSoup
  1. 准备需要解析的网页数据(实际是用requests或者selenium获取)
data = open('text1.html', encoding='utf-8').read()
  1. 创建BeautifulSoup对象(可以自动纠正数据中错误的html结构)
soup = BeautifulSoup(data, 'lxml')
# print(soup)
  1. 通过BeautifulSoup对象获取标签和标签内容
  • 获取标签

    • BeautifulSoup对象.select(css选择器) - 获取css选择器中所有的标签,返回列表,元素是选中的标签对象
    • BeautifulSoup对象.select_one(css选择器) - 获取css选择器中的第一个标签,返回标签对象
    • 标签对象.select/select_one(css选择器) - 在标签对象中获取css选择器选中的标签
result = soup.select('p')
print(result)  # [<p id="p1">我是段落1</p>, <p id="p2">我是段落2</p>]result = soup.select_one('p')
print(result)  # <p id="p1">我是段落1</p>result = soup.select('#p1')
print(result)  # [<p id="p1">我是段落1</p>]result = soup.select_one('#p1')
print(result)  # <p id="p1">我是段落1</p>
  • 获取标签内容

    • 标签对象.string - 获取标签中的文字内容,只有标签内容是纯文字才有效,否则结果是None
    • 标签对象.get_text() - 标签内容中所有的文字信息
    • 标签对象.contents
# 标签对象.string
p2 = soup.select_one('div>p')
print(p2)  # <p id="p2">我是段落2</p>
print(p2.string)  # 我是段落2s1 = soup.select_one('#s1')
print(s1)  # <span id="s1"><b>我是span1</b></span>
print(s1.string)  # None# 标签对象.get_text()
print(p2.get_text())  # 我是段落2
print(s1.get_text())  # 我是span1# 标签对象.contents
print(p2.contents)  # ['我是段落2']
result = s1.contents
print(result)  # ['我是', <b>span1</b>]
print(result[-1].get_text())  # span1
  • 获取标签属性
a1 = soup.select_one('div>a')
print(a1)  # <a href="https://www.baidu.com">我是超链接2</a>
print(a1.attrs['href'])  # https://www.baidu.comimg = soup.select_one('img')  # <img alt="" src="http://www.gaoimg.com/uploads/allimg/210801/1-210P1151401S1.jpg"/>
print(img)  # <img alt="" src="http://www.gaoimg.com/uploads/allimg/210801/1-210P1151401S1.jpg"/>
print(img.attrs['src'])  # http://www.gaoimg.com/uploads/allimg/210801/1-210P1151401S1.jpg

豆瓣电影TOP250信息抓取

import csv
import requests
from bs4 import BeautifulSoup# 创建保存信息的csv文件
f = open('files/doubantop250.csv', 'a', encoding='utf-8', newline='')
writer = csv.writer(f)# 设置请求头信息
header = {'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 Edg/92.0.902.67','Cookie': '自己的Cookie信息'
}# 对每页信息进行遍历获取
for x in range(0, 226, 25):url = f'https://movie.douban.com/top250?start={x}&filter='print(url)res = requests.get(url, headers=header)soup = BeautifulSoup(res.text, 'lxml')# 定位到保存电影信息的块中all_movie_li = soup.select('#content>div>div.article>ol>li')# 遍历每部电影的信息,取出所需要的信息tmp = []for movie_info in all_movie_li:mov_name = movie_info.select_one('.pic>a>img').attrs['alt']mov_star = movie_info.select_one('.rating_num').get_text()# 信息缺失项报错跳过try:mov_quote = movie_info.select_one('.inq').get_text()except AttributeError:mov_quote = Nonemov_rev = movie_info.select('.info>.bd>.star>span')[3].get_text()mov_img = movie_info.select_one('.pic>a>img').attrs['src']tmp.extend([mov_name, mov_star, mov_rev, mov_img, mov_quote])# 写入文件writer.writerow(tmp)tmp.clear()
# CSV结果样式
电影名,评分,评分人数,电影海报,短评
肖申克的救赎,9.7,2418141人评价,https://img2.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg,希望让人自由。
霸王别姬,9.6,1799374人评价,https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2561716440.jpg,风华绝代。
阿甘正传,9.5,1819919人评价,https://img2.doubanio.com/view/photo/s_ratio_poster/public/p2372307693.jpg,一部美国近现代史。

Day022 - requests与bs4相关推荐

  1. python爬虫requests和bs4引入

    python爬虫requests和bs4引入 python:网络爬虫:利用优秀的第三方库,如requests,beautifulsoup 1.前提基础: Python3安装&Python3环境 ...

  2. python 安装模块requests、bs4、html5lib、 lxml、matplotlib

    前言:最近学习python,想尝试下实现抓取网页的文本,并实现词频统计的功能.实现该功能需要安装的模块,分别是  requests.bs4.html5lib.lxml.matplotlib 背景:已经 ...

  3. Python spider (二) Requests Lxml bs4

    1.安装Requests && Lxml && bs4 pip install requests pip install bs4 pip install lxml 2. ...

  4. day19 学习python爬虫——requests和bs4

    day19 学习python爬虫--requests和bs4 一.requests使用详解 import requests 1.发送请求 requests.get(请求地址) - 直接获取请求地址对应 ...

  5. Python网络爬虫requests、bs4爬取空姐图片,福利哦

    Scrapy框架很好,也提供了很多扩展点,可以自己编写中间件处理Scrapy的Request和Response.但是可定制化或者可掌控性来说,还是自己写的爬虫更加强一些. 接下来,我们来看一下使用Py ...

  6. 网络爬虫requests和bs4简单入门

    网络爬虫基础(嵩天老师爬虫教学) 本博客的主要内容:介绍如何使用基本的库完成对html页面内容的爬取和分析,分以下几方面介绍 介绍网络爬虫的基本工作过程 requests库的基本用法 使用Beauti ...

  7. 爬虫系统基础框架 何时使用爬虫框架? requests库 + bs4来实现简单爬虫

    转载请注明出处https://www.cnblogs.com/alexlee666/p/10180519.html,谢谢! 文中图片来自于我的简书博客. 一. 爬虫用途和本质: 网络爬虫顾名思义即模仿 ...

  8. 利用requests+re+bs4 爬取微星官网部分产品信息(主要是一些笔记本,少量台式机)

    和朋友交流爬虫的时候看到这个网站,朋友说让我试试,昨天乘着心情好,就爬了一下. 我首先分心了一下这个网站,这个网站很有意思,由于自己的能力问题和爱好,没有对权证进行爬取,只是提取了部分商品的信息. 我 ...

  9. requests与bs4编码

    在使用requests库时,response对象的.text属性 r.text 默认的response对象的encoding属性是None,所以在调用r.text解码的时候,request会猜它的编码 ...

最新文章

  1. python爬取慕课视频-python爬虫:爬取网站视频
  2. android textview 常用属性id,Android TextView常用属性
  3. bash的环境配置文件
  4. 全球服务器系统市场份额,IDC发布2017年第一季度全球融合系统报告 超融合市场最火爆...
  5. mininet在哪编写python脚本_1 mininet 简介及同时支持python2和python3
  6. vs2012 使用mysql_vs2012连接mysql
  7. java生成json字符串的方法
  8. config设置源 使用pip_conda和pip重新配置源
  9. codeblock无法新建工程_【工程前沿】专业专注凸显市政“制造” ——八公司太原南站东广场配套路网工程施工纪实...
  10. 中国省市区三级联动带下拉美化带数据库
  11. C# 机房重构——VS2017中没有报表控件(ReportView)
  12. Crosses and Crosses
  13. C语言:简单的switch()函数,代码讲解
  14. 【HTML/CSS】HTML/CSS个人学习总结
  15. c语言作业参考文献,c语言外文参考文献_数学类的文献 外文翻译_c 语言与面向对象的设计 习题及参考解答...
  16. ajax重要且常用参数
  17. 晋中学院 计算机系在哪个校区,晋中学院有几个校区及校区地址
  18. 由于老是重装系统,今天记录一下重装系统后大学生要安装的软件
  19. Mopria为Windows 10更新提供IPP打印解决方案
  20. 小程序标准有结论了,W3C发布小程序技术标准白皮书

热门文章

  1. Bugly自定义bug
  2. C#光功率计_扫码器导入excel
  3. 《11.uboot的移植-从三星官方uboot开始移植》
  4. 《11.uboot的移植1-从三星官方uboot开始移植》
  5. 如何查看Windows电脑上的CA证书
  6. 轻轻的、淡淡的,却余味悠长
  7. 列举c语言的算法描述,C语言算法
  8. 经典算法—快速排序(Quicksort)使用详解
  9. 王者容易怎么开启语音服务器,王者荣耀怎么开语音?王者荣耀语音开启教程
  10. CListCtrl::SortItems的用法