【Python爬虫开发实战①】使用urllib以及XPath爬取可爱小猫图片

这篇具有很好参考价值的文章主要介绍了【Python爬虫开发实战①】使用urllib以及XPath爬取可爱小猫图片。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

个人主页:为梦而生~ 关注我一起学习吧!
专栏:python网络爬虫从基础到实战 欢迎订阅!后面的内容会越来越有意思~
往期推荐
【Python爬虫开发基础⑦】urllib库的基本使用
【Python爬虫开发基础⑧】XPath库及其基本用法
我们在之前已经有8篇文章讲述基础知识了,下面我们利用已有的知识来进行一个简单的爬虫实战,感受一下爬虫的魅力,同时也可以增加学习的乐趣~
本文爬虫程序用到了urllib库和XPath库,都是上两次文章讲过的,链接已经放在上面了,没有看过的先看一下前置知识哦~下面我们马上开始!

首先来看一下效果:
【Python爬虫开发实战①】使用urllib以及XPath爬取可爱小猫图片



1 确定爬取目标

我们第一步要做的,就是找到要爬取的目标网站,同时利用开发者工具看清楚前端的代码结构,方便我们写合适的xpath代码。

在这里,我们可以看到,class属性为containerdiv标签有两个,通过定位知道下面的标签包含着想要的图片。
【Python爬虫开发实战①】使用urllib以及XPath爬取可爱小猫图片

在其中包含图片的div标签里面,我们注意到,每一个class属性为item masonry-brickdiv标签对应着一个图片。
【Python爬虫开发实战①】使用urllib以及XPath爬取可爱小猫图片
每一个图片的地址和名字就藏在这里面,但是着并不代表可以直接用,具体原因我们后面再说。
【Python爬虫开发实战①】使用urllib以及XPath爬取可爱小猫图片


2 开始写代码

  • 首先,导入需要的库
from lxml import etree
import urllib.request
  • 设置开始和结束页
start_page = int(input('请输入起始页码:'))
end_page = int(input('清输入结束页码:'))
  • 然后,对每一页的数据,都按照这三步进行:(1)请求对象的定制 (2)获取网页的源码 (3)下载图片
  • 可以用一个for循环来完成
for page in range(start_page, end_page+1):
    # (1) 请求对象的定制
    request = create_request(page)
    # (2) 获取网页的源码
    content = get_content(request)
    # (3) 下载
    down_load(content)
  • 下面来定义里面的每一个函数(细节放在代码的注释中讲解)
# 请求对象的定制
def create_request(page):
	# 由于不同的页码会导致网址的改变,所以我们把不变的部分作为base_url
    base_url = 'https://sc.chinaz.com/tupian/xiaomaotupian.html'
    # 对于形参不同的page,我们通过简单的字符串拼接得到响应的网址
    if page == 1 :
        url = base_url
    else :
        url = 'https://sc.chinaz.com/tupian/xiaomaotupian_' + str(page) + '.html'
    print(url)
    # 设置请求头,这里设置了UA,每一个浏览器的UA不一样,可以到抓包后的报文中找
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
    }
    # 生成请求对象,用于向服务器发送请求
    request = urllib.request.Request(url = url, headers = headers)
    # 返回请求对象
    return request
  • 根据请求对象,向服务器发送请求,获取网页源码
# 获取网页的源码
def get_content(request):
    # 发送请求获取响应
    response = urllib.request.urlopen(request)
    # 对响应进行解码
    content = response.read().decode('utf-8')
    # 返回
    return content
  • 进行最后一步:下载
# 下载
def down_load(content):
	# 创建ElementTree对象
    tree = etree.HTML(content)
    # 使用xpath表达式,获取图片的名字和对应的地址
    name_list = tree.xpath('//div[@class="container"]//img/@alt') 
    # 由于页面的预加载,获取到的HTML代码中,图片的地址并不会直接存在src里面,而是后面的data-original
    src_list = tree.xpath('//div[@class="container"]//img/@data-original')
    
#     print(len(name_list), len(src_list))
	# 遍历本页面的所有图片
    for i in range(len(name_list)):
        name = name_list[i]
        src = src_list[i]
        url = 'https:' + src
#         print(name, url)
		# 利用urlretrieve进行图片的下载
        urllib.request.urlretrieve(url = url, filename = './cat imgs/' + name + '.jpg')

注意:上面的图片预加载是指:当页面还没有滑倒最下面的时候,后面的img标签里面的src属性并没有存储图片的地址,而地址是存在后面的data-original里面,如下图所示:
【Python爬虫开发实战①】使用urllib以及XPath爬取可爱小猫图片

最后,我们运行代码,就可以得到一开始的图片了!赶紧试一下吧!后面的文章会介绍更加丰富多彩的爬虫基础~敬请期待文章来源地址https://www.toymoban.com/news/detail-505843.html

到了这里,关于【Python爬虫开发实战①】使用urllib以及XPath爬取可爱小猫图片的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python爬虫——urllib_ajax的get请求爬取豆瓣电影前十页

    ajax: 就是一段js代码,通过这段代码,可以让页面发送异步的请求,或者向服务器发送一个东西,即和服务器进行交互 对于ajax: 一定会有 url,请求方法(get, post),可能有数据 一般使用 json 格式 打开豆瓣电影,F12打开控制台(我这里是科幻类排行榜) 这是第一页 第二页 第

    2024年02月16日
    浏览(56)
  • Python爬虫|基础知识点详细汇总(requests、urllib、re、bs4、xpath、PyQuery、jsonpath、多线程、协程、数据保存、selenium)

    1. 请求数据 ① requests (1) 基本使用 参数 对响应内容的操作 (2) Requests进阶:使用Session 为什么要用 Session? Session代表服务器与浏览器的一次会话过程,Session对象存储了特定用户会话所需的信息 例如:一定时间内记录账号密码 (自动登录) 可以加快 requests请求速度 需要客户端登录的

    2023年04月08日
    浏览(56)
  • 六个步骤学会使用Python爬虫爬取数据(爬虫爬取微博实战)

    用python的爬虫爬取数据真的很简单,只要掌握这六步就好,也不复杂。以前还以为爬虫很难,结果一上手,从初学到把东西爬下来,一个小时都不到就解决了。 第一步:安装requests库和BeautifulSoup库 在程序中两个库的书写是这样的: 由于我使用的是pycharm进行的python编程。所以

    2024年02月08日
    浏览(60)
  • 〖Python网络爬虫实战⑫〗- XPATH语法介绍

    订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+                 python项目实战                  Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付费专栏,

    2023年04月14日
    浏览(59)
  • Python爬虫实战——Lazada商品数据(selenium自动化爬虫,xpath定位)

            在此说明,这个项目是我第一次真正去爬的一个网站,里面写的代码我自己都看不下去,但是已经不想花时间去重构了,所以看个乐呵就好,要喷也可以(下手轻一点)。这篇文算是记录我的学习中出现的一些问题,不建议拿来学习和真拿我的代码去爬Lazada的数据,

    2024年02月02日
    浏览(64)
  • Python爬虫实战之爬淘宝商品--selenium+Xpath

    代码链接 利用selenium来自动翻页爬取淘宝商品的标题,价格,销量,产地信息。 导入库: 注意自己配置好python环境(谷歌驱动…) 利用selenium,手动登录获取cookie保存在本地用于登录平台(便于测试代码),访问商品页url通过Xpath选中对象拿数据,翻页,通过Xpath选中对象拿数据,翻页

    2024年02月04日
    浏览(51)
  • python爬虫实战——小说爬取

    基于 requests 库和 lxml 库编写的爬虫,目标小说网站域名http://www.365kk.cc/,类似的小说网站殊途同归,均可采用本文方法爬取。 目标网站 :传送门 本文的目标书籍 :《我的师兄实在太稳健了》 “渡劫只有九成八的把握,和送死有什么区别?” 网络爬虫的工作实际上主要分为

    2024年02月06日
    浏览(45)
  • Python爬虫实战——爬取新闻数据(简单的深度爬虫)

            又到了爬新闻的环节(好像学爬虫都要去爬爬新闻,没办法谁让新闻一般都很好爬呢XD,拿来练练手),只作为技术分享,这一次要的数据是分在了两个界面,所以试一下深度爬虫,不过是很简单的。  网页url 1.先看看网站网址的规律  发现这部分就是每一天的新闻

    2024年02月11日
    浏览(44)
  • Python 爬虫之 urllib 包基本使用

    urllib 是一个 python 内置包,不需要额外安装即可使用,包里面包含了以下几个用来处理 url 的模块: urllib.request,用来打开和读取 url,意思就是可以用它来模拟发送请求,就像在浏览器里输入网址然后敲击回车一样,获取网页响应内容。 urllib.error,用来处理 urllib.request 引起

    2024年02月09日
    浏览(57)
  • Python爬虫库之urllib使用详解

      一、Python urllib库 Python urllib 库用于操作网页 URL,并对网页的内容进行抓取处理。 Python3 的 urllib。 urllib 包 包含以下几个模块: urllib.request - 打开和读取 URL。 urllib.error - 包含 urllib.request 抛出的异常。 urllib.parse - 解析 URL。 urllib.robotparser - 解析 robots.txt 文件。 二、urllib.r

    2024年02月11日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包