《python爬虫练习2》爬取网站表情包

这篇具有很好参考价值的文章主要介绍了《python爬虫练习2》爬取网站表情包。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

获取网站表情包

运行环境:

#环境:win10
import requests  #发送请求
from lxml import etree  #获取html主页树状代码
import os #创建本地文件夹用来存储图片

1.分析:

目标网址:https://www.runoob.com/
首先想要获取什么就从哪里入手,打开图所在的网页,F12查看代码的内容,此处抓取的是资源文件,爬取中发现ajax类型的文件加载出来的无法知道图片的源地址所以暂时不能用这种方式获取。因此可以生成第一步的代码。

import request

url  = "https://www.runoob.com/w3cnote/programmer-joke-22.html"
headers = {
    "User-Agent" :'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
res = requests.get(url =url ,headers = headers) #获取了该页面的内容

2.筛选:

获取的内容是整个网页的内容,我们需要筛选出我们需要的东西,这个地方使用到了知识点“xpath
,我们通过HTML的代码已经知道了动态图所放的位置,找到最外层的标签class=“article-intro”,然后获取src对应的地址就可以了

import request
from lxml import etree

url  = "https://www.runoob.com/w3cnote/programmer-joke-22.html"
headers = {
    "User-Agent" :'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
res = requests.get(url =url ,headers = headers) #获取了该页面的内容
# print(res.text)
tree = etree.HTML(res.text)
# print(tree.xpath("//*[@class='article-intro']/p/@src")) #之前经常用这个方法,出来的往往是空
print(tree.xpath("//div[@class='article-intro']/descendant::*/@src")) #descendant::*表示的是@class='article-intro'标签下面所有

3.范围扩大:

通过上面的设计,我们已经可以获取当前页面的图片的地址了,但是我们应该可以从下面知道这里是有很多页的,这个地方我知道两种方法,一种就是读取下一页标签,结束的时候标签已经是消失的状态,以此来获取下一页的跳转地址。另外一种就是我这次用的目测法,我直接是对比了几个页面的区别,就发现了页面中数字参数就是控制不同页面的。

import request
from lxml import etree

url  = "https://www.runoob.com/w3cnote/programmer-joke-22.html"
headers = {
    "User-Agent" :'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}

for j in range(22,28):
    url = f"https://www.runoob.com/w3cnote/programmer-joke-{j}.html"
    res = requests.get(url =url ,headers = headers) #获取了该页面的内容
    # print(res.text)
    tree = etree.HTML(res.text)
    # print(tree.xpath("//*[@class='article-intro']/p/@src")) #之前经常用这个方法,出来的往往是空
    print(tree.xpath("//div[@class='article-intro']/descendant::*/@src"))

4.存储:

我们已经获取了每个页面的每一条图片的链接,这个时候我们就可以进行图片的存储,无论是图片还是视频这一类的数据都需要通过二进制的形式进行存储,所以写入的时候通常是response.content,这个地方我是首先创建了一个文件夹,然后在此路径下写入图片的数据,因为网站中获取src相关的链接有些许不同,所以我在设计的时候也调整了一下我的代码设计。

import requests
from lxml import etree
import os
url  = "https://www.runoob.com/w3cnote/programmer-joke-22.html"
headers = {
    "User-Agent" :'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
if not os.path.exists('images'):
    os.makedirs('images')
http = "https:"
for j in range(22,28):
    url = f"https://www.runoob.com/w3cnote/programmer-joke-{j}.html"
    res = requests.get(url =url ,headers = headers)
    # print(res.text)
    tree = etree.HTML(res.text)
    # print(tree.xpath("//*[@class='article-intro']/p/@src")) #之前经常用这个方法,出来的往往是空
    print(tree.xpath("//div[@class='article-intro']/descendant::*/@src"))
    for i in tree.xpath("//div[@class='article-intro']/descendant::*/@src"):
        try:
            if "https"  in i:
                x = i.split("/")
                print(x[-1])
                res = requests.get(url=i, headers=headers)
                with open(f"images/{x[-1]}","wb") as f:
                    f.write(res.content)
            elif "//" in i :
                x = i.split("/")
                y = x[-1]
                y = y.replace('"',"")
                print(x[-1])
                res = requests.get(url=(http + i), headers=headers)
                with open(f"images/{y}", "wb") as s:
                    s.write(res.content)
            else:
                continue
        except:
            print("跳过一个异常")

结语:

至此就实现了对于图片的一个获取,这种图片或者文字都是比较好获取的,通过这个方法也可以轻易的获取某些网站的头条热点的文字和链接,也可以用scrapy框架来进行爬取,一般情况下我是习惯先用基础代码捋清思路然后再用框架实现爬取的过程。学习过程中也是发现,部分内容无法通过request的返回值来爬取的,因为这些数据是动态的,虽然可以在F12中看到他们的存在。这种通过ajax生成的内容我们可能需要使用selenium来进行爬取,当然selenium的劣势就是无法在服务器进行部署,只能在有网页实体中获取对应的内容。文章来源地址https://www.toymoban.com/news/detail-428296.html

到了这里,关于《python爬虫练习2》爬取网站表情包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【python爬虫】中央气象局预报—静态网页图像爬取练习

    中央气象台 是中国气象局(中央气象台)发布的七天降水预报页面。这个页面提供了未来一周内各地区的降水预报情况,帮助人们了解即将到来的降水情况,以做出相应的应对措施。页面中的预报内容通常包括以下要点: 地区分布 :页面展示了中国各地区的降水预报情况。

    2024年02月10日
    浏览(12)
  • Python爬虫入门:使用selenium库,webdriver库模拟浏览器爬虫,模拟用户爬虫,爬取网站内文章数据,循环爬取网站全部数据。

    *严正声明:本文仅限于技术讨论与分享,严禁用于非法途径。 目录 准备工具: 思路: 具体操作: 调用需要的库: 启动浏览器驱动: 代码主体:  完整代码(解析注释): Python环境; 安装selenium库; Python编辑器; 待爬取的网站; 安装好的浏览器; 与浏览器版本相对应的

    2023年04月24日
    浏览(12)
  • 【Python】爬虫练习-爬取豆瓣网电影评论用户的观影习惯数据

    目录 前言 一、配置环境 1.1、 安装Python 1.2、 安装Requests库和BeautifulSoup库 1.3.、安装Matplotlib 二、登录豆瓣网(重点) 2.1、获取代理 2.2、测试代理ip是否可用 2.3、设置大量请求头随机使用 2.4、登录豆瓣网 三、爬取某一部热门电影数据 3.1、爬取全部长、短评论 3.2、获取用户

    2024年02月09日
    浏览(11)
  • [Python练习]使用Python爬虫爬取豆瓣top250的电影的页面源码

    在终端中输入以下代码(直接在cmd命令提示符中,不需要打开Python) 从豆瓣网提供的镜像网站下载requests第三方库 是从国外网站下载,速度慢甚至有时候无法下载 运行代码之后,没反应,无输出结果 可以看一下返回的页面请求状态码是多少: 状态码是 418 ,所有4开头的状态

    2024年01月17日
    浏览(16)
  • Python爬虫:实现爬取、下载网站数据的几种方法

    使用脚本进行下载的需求很常见,可以是常规文件、web页面、Amazon S3和其他资源。Python 提供了很多模块从 web 下载文件。下面介绍 requests 模块是模仿网页请求的形式从一个URL下载文件 示例代码: 安装 wget 库 示例代码 有些 URL 会被重定向到另一个 URL,后者是真正的下载链接

    2024年02月05日
    浏览(14)
  • python爬虫-获取某某在线翻译的查询结果,爬取json文件并解析

    url,请求方式,请求格式,都在此请求的header中 (此内容浏览器不同显示内容应该也是一样的,我用的edge浏览器,我也试过chrom浏览器,效果一样) ctrl + b进入方法体内即可 解读response.text,这是一个包含Unicode字符的JSON字符串编码 也许我们需要翻译一下 将API接口返回的JS

    2024年02月06日
    浏览(12)
  • python爬取豆瓣电影排行前250获取电影名称和网络链接[静态网页]————爬虫实例(1)

    目录 1.算法原理: 2.程序流程: 3.程序代码: 4.运行结果(部分结果展示): 5.结果分析: (1)利用import命令导入模块或者导入模块中的对象; ①利用requests库获取数据; ②用BeautifulSoup库将网页源代码转换成BeautifulSoup类型,以便于数据的解析和处理; ③用time库进行时间延时

    2023年04月16日
    浏览(13)
  • 爬虫机试题-爬取新闻网站

    之前投简历时遇到了这样的一个笔试。本以为会是数据结构算法之类的没想到直接发了一个word直接提需求,感觉挺有意思就写了这篇文章,感兴趣的朋友可以看看。 通过分析页面结构我们得以知道,这个页面本身没有新闻信息,是由js代码执行后才将信息插入到html中的,因

    2024年04月25日
    浏览(5)
  • 爬虫源码---爬取小猫猫交易网站

    前言: 本片文章主要对爬虫爬取网页数据来进行一个简单的解答,对与其中的数据来进行一个爬取。 Python版本:3.7.3 IDE:PyCharm 所需库:requests ,parsel  我们需要获取以下数据: \\\'地区\\\', \\\'店名\\\', \\\'标题\\\', \\\'价格\\\', \\\'浏览次数\\\', \\\'卖家承诺\\\', \\\'在售只数\\\', \\\'年龄\\\', \\\'品种\\\', \\\'预防\\\', 

    2024年02月10日
    浏览(24)
  • 【爬虫】3.4 爬取网站复杂数据

    进一步把前面的Web网站的mysql.html, python.html, java.html丰富其中 的内容,并加上图形: mysql.html java.html python.html 服务器 server.py 程序还是前面3.2的,如下:         爬取网站中的mysql, python, java的简介与图像。我们看到简介在网页的第一个div中,图像在img中,而且只有这3个网

    2024年02月08日
    浏览(17)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包