实例1:直接爬取网页

实例2 : 构造headers,突破访问限制,模拟浏览器爬取网页

实例3 : 分析请求参数,构造请求参数爬取所需网页

实例4: 爬取图片

实例5: 分析请求参数,构造请求参数爬取所需信息

实例1:京东商品页面的爬取

image.png

现在我们利用requests库爬取这个页面的商品信息

首先引入requests库

import requests

然后爬取页面

r =requests.get("https://item.jd.com/4645290.html")

然后我们测试状态码,编码和内容

r.status_code

r.encoding

r.text[:1000]

image.png

到此,说明我们已经成功利用requests库获取到了商品页面的信息。

完整的爬取代码

import requests

url = "https://item.jd.com/4645290.html"

try:

r = requests.get(url)

r.raise_for_status()

r.encoding = r.apparent_encoding

print(r.text[:1000])

except:

print("爬取失败")

实例2 : 亚马逊商品页面爬取

我们选取如下界面进行爬取

image.png

首先,我们按照之前的步骤进行爬取

引入requests库,然后get,判断status_code

r = requests.get("https://www.amazon.cn/dp/B0011F7WU4/ref=s9_acss_bw_cg_JAVA_1a1_w?m=A1AJ19PSB66TGU&pf_rd_m=A1U5RCOVU0NYF2&pf_rd_s=merchandised-search-6&pf_rd_r=D9MK8AMFACZGHMFJGRXP&pf_rd_t=101&pf_rd_p=f411a6d2-b2c5-4105-abd9-69dbe8c05f1c&pf_rd_i=1899860071")

r.status_code

显示503,说明服务器错误,

503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。

我们查看编码发现

r.encoding

'ISO-8859-1'

我们需要转换编码

r.encoding = r.apparent_encoding

然后显示爬取内容,发现

image.png

发现出现了错误。

网页告诉我们出现了错误,但只要我们正确获取到了网页的内容,就说明网路方面肯定是没有错误的。这说明亚马逊对爬虫有限制,一般对爬虫限制的话,就是robots协议,其中还可以对访问对象进行限制,限制只能通过相应的浏览器访问,而限制爬虫的访问。

我们通过request.header查看我们发给亚马逊的请求头部到底是什么内容

image.png

我们看到信息中的user-agent的信息是python。这说明我们的程序诚实的告诉亚马逊,这个程序是python的requests库发起的请求。

亚马逊的服务器看到这是个爬虫请求,所以就返回错误的信息。

那么我们如何才能访问呢?

我们都知道requests库可以更改请求的头部信息,我们可以模拟一个浏览器的请求

我们构造一个键值对

kv = {'user-agent':'Mozilla/5.0'}

url = "https://www.amazon.cn/dp/B0011F7WU4/ref=s9_acss_bw_cg_JAVA_1a1_w?m=A1AJ19PSB66TGU&pf_rd_m=A1U5RCOVU0NYF2&pf_rd_s=merchandised-search-6&pf_rd_r=D9MK8AMFACZGHMFJGRXP&pf_rd_t=101&pf_rd_p=f411a6d2-b2c5-4105-abd9-69dbe8c05f1c&pf_rd_i=1899860071"

r = requests.get(url, headers = kv)

我们查看状态码,发现为200,说明这一次成功获取到了页面的内容

image.png

完整的爬取代码

import requests

url = "https://www.amazon.cn/dp/B0011F7WU4/ref=s9_acss_bw_cg_JAVA_1a1_w?m=A1AJ19PSB66TGU&pf_rd_m=A1U5RCOVU0NYF2&pf_rd_s=merchandised-search-6&pf_rd_r=D9MK8AMFACZGHMFJGRXP&pf_rd_t=101&pf_rd_p=f411a6d2-b2c5-4105-abd9-69dbe8c05f1c&pf_rd_i=1899860071"

try:

kv = {'user-agent':'Mozilla/5.0'}

r = requests.get(url, headers = kv)

r.raise_for_status()

r.encoding = r.apparent_encoding

print(r.text[1000:2000])

except:

print("爬取失败")

实例3: 百度/360搜索关键词提交爬虫

搜索关键词提交的接口:

https://www.baidu.com/s?ie=UTF-8&wd=keyword

通过requests的params参数,构造查询参数

完整的代码

import requests

keyword = "刘德华"

url = "http://www.baidu.com/s?ie=UTF-8"

try:

kv = {"wd":keyword}

r = requests.get(url, params = kv)

print(r.request.url)

r.raise_for_status()

print(len(r.text))

print(r.text)

except:

print("爬取失败")

实例4 网络图片的爬取和存储

网络中图片连接的格式

http://www.example.com/picture.jpg

假设我们现在要爬取

http://www.nationalgeographic.com.cn/

图片连接:

http://image.nationalgeographic.com.cn/2015/0121/20150121033625957.jpg

完整的爬取代码:

import requests

import os

url = "http://image.nationalgeographic.com.cn/2015/0121/20150121033625957.jpg"

root = "D://pics//"

path = root + url.split('/')[-1]

try:

if not os.path.exists(root):

os.mkdir(root)

if not os.path.exists(path):

r = requests.get(url)

with open(path,'wb') as f:

f.write(r.content)

f.close()

print("文件保存成功")

else :

print("文件已存在")

except:

print("爬取失败")

实例5 IP地址归属地查询

我们分析它请求的过程,发现它的请求接口就是在地址后附加参数,类似于百度搜索

http://m.ip138.com/ip.asp?ip=125.220.159.160

所以我们可以构造查询参数,发送给服务器,然后获取返回的结果

完整代码

import requests

url = "http://m.ip138.com/ip.asp?"

ip = "125.220.159.160"

kv = {"ip":ip}

try:

r = requests.get(url, params = kv)

r.raise_for_status()

r.encoding = r.apparent_encoding

print(r.text)

except:

print("爬取失败")

python爬虫requests实战_Python爬虫之requests库网络爬取简单实战相关推荐

  1. python提取身份证信息_Python selenium 身份证信息在线解析爬取

    当做笔记: 身份证地区查询,网络上的查询网站也比较多.现在查询数据库中的身份证,识别其中的信息.主要通过该网站:http://www.gpsspg.com/sfz/ 脚本: #-*- coding: ...

  2. Python爬虫 | 对广州市政府数据统一开放平台数据的爬取

    Python爬虫 | 对广州市政府数据统一开放平台数据的爬取 简单爬虫 网页分析 爬虫代码 简单爬虫 本次爬虫演示的是对 广州市政府数据统一开放平台 数据的爬取 网页分析 我们先到url=' http ...

  3. pythonrequests爬虫外文文献_Python爬虫(一):爬虫介绍、Requests库介绍及实例-Go语言中文社区...

    本文主要内容: 1.爬虫的相关概念. 2.Requsets库安装. 3.Requests库介绍. 4.爬取网页的通用代码框架. 1.爬虫相关概念. 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社 ...

  4. python3爬虫实战:requests库+正则表达式爬取头像

    python3爬虫实战:requests库+正则表达式爬取头像 网站url:https://www.woyaogexing.com/touxiang/qinglv/new/ 浏览网页:可以发现每个图片 ...

  5. python爬虫实战之图灵社区图书信息的爬取(找了久,才找到一个比较好爬取的网站)

    python爬虫实战之图灵社区图书信息的爬取 程序的描述 目标 获取图灵社区(https://www.ituring.com.cn/book)中40本图书的书名 将获取的信息以列表的形式输出到屏幕上, ...

  6. python爬虫自学路线_python 爬虫学习路线:从入门到进阶

    大家好,我是凉拌 今天给大家详解一下我的爬虫学习路线. 对于小白来说,爬虫可能是一件非常复杂.技术门槛很高的事情.比如有的人则认为先要掌握网页的知识,遂开始 HTML\CSS,结果入了前端的坑,浪费了 ...

  7. 爬虫入门—requests模块基础之药监企业信息爬取

    爬虫入门-requests模块基础之药监企业信息爬取 Author: Labyrinthine Leo   Init_time: 2021.02.22 Key Words: Spider.reques ...

  8. python爬虫爬取新闻实战01:小白如何迅速学会爬虫爬取上千条新闻

    爬虫爬取新闻实战01:小白如何迅速学会爬虫爬取千条新闻 文章目录 爬虫爬取新闻实战01:小白如何迅速学会爬虫爬取千条新闻 1.前言 2 .爬虫原理介绍 2.1.图片爬虫 2.2 文字爬虫 3.用八爪鱼 ...

  9. python网页爬虫漫画案例_Python爬虫 JS案例分析:爬取鬼灭之刃漫

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 文章转载于公众号:快学Python 作者:皖渝 猪油骨,拿来卤~今天,来分享一下python图片爬 ...

最新文章

  1. npm install 报错 npm ERR! code Z_BUF_ERROR 问题解决
  2. Android L 仍需改善的三个问题
  3. ServletConfig对象和ServletContext对象
  4. 二项分布和泊松分布的关系
  5. BZOJ 4974: 字符串大师
  6. softlayer virtual machine vhd磁盘镜像导入shell脚本
  7. CDN高级技术专家周哲:深度剖析短视频分发过程中的用户体验优化技术点
  8. 多标签分类与BCELoss
  9. redis-3.2.9安装
  10. 银行的起源---》阮一峰,
  11. webApp PHP项目打包供手机下载,免越狱免签名的苹果ios webAPP打包生成的网站教程(附iphone配置实用工具)...
  12. 基金账户与基金交易账户
  13. MySQL使用group by分组查询每组最新的一笔数据
  14. idea gwt 怎么编译_带Spring Boot的GWT
  15. Ubuntu20 设置桌面壁纸自动切换
  16. git push时rejected,解决non-fast-forward errors的办法
  17. 鹏业云计价i20(四川)CJZ阅读模式功能
  18. 我开发过程中遇到的Echarts地图立体描边问题解决方式
  19. 今天才发现!华为手机点击这个按钮,就能自动保存通话录音
  20. 王者荣耀 微信登录 服务器找不到,王者荣耀老号找不到区点我的区也找不到怎么办?qq/微信账号所在区查询方法...

热门文章

  1. 如果你是IT技术人员,请思考这15个问题
  2. jq 如何让点击其他地方隐藏_详解jQuery除指定区域外点击任何地方隐藏DIV功能
  3. 1-9其他数据库注入
  4. linux中第一个进程的形成,Linux进程管理
  5. php post调用api,PHP(CURL)POST数据调用API简单示例
  6. Vue node.js商城-购物车模块
  7. 推荐40个简单的 jQuery 导航插件和教程【下篇】
  8. 记录一个前端架构的想法
  9. 2019.7.16考试总结
  10. linux里面i386 i686 i486 i586代表什么?是什么意思