阅读之前先保证会使用python并且了解html前端结构

首先打开

目标网站 我们可以看到一个动漫角色的图片,现在我们要利用python程序来保存这张图片到本地。

1.右键图片

python网页查询然后返回结果 python查找网页元素_爬虫


选择审查元素(有些浏览器叫做检查)

然后Ctrl+shift+c,打开选取元素模式,点击图片即可找到下图的位置

python网页查询然后返回结果 python查找网页元素_状态码_02


可看到这张图片,也就是网页的结构

我们要提取的图片在body->div->div->div->img中。

因为这个img有id,所以我们很容易定位

标签img,id=“PicBigBtn”里的src值即可,

但是我们将这个图片复制打开,发现他的像素很低,所以我们判断他不是我们要找的图片。

回到目标网站

python网页查询然后返回结果 python查找网页元素_python网页查询然后返回结果_03


右上角可以看到放大,我们点击放大,看到了清晰的图片

这时再次审查元素。

然后Ctrl+shift+c,打开选取元素模式,在图片上的时候我们发现一个翻页div遮挡了图片这时候我们来到左下高亮部分右键。

python网页查询然后返回结果 python查找网页元素_爬虫_04


python网页查询然后返回结果 python查找网页元素_python网页查询然后返回结果_05


删除元素。删除后再次选取元素模式,点击图片

python网页查询然后返回结果 python查找网页元素_html_06


这样就找到我们要的img了,复制这个img的地址打开新页面,我们可以看到清晰的图片

这张图片我们可以看出,很容易索引。

python网页查询然后返回结果 python查找网页元素_python网页查询然后返回结果_07


因为id是唯一的,我们只需要寻找img标签id等于layerDeskPic即可,

分析完了,接下来我们来到我们的python

import requests

from bs4 import BeautifulSoup

导入我们的两个包
写好我们的代码

import requests

from bs4 import BeautifulSoup


def pachong():
    url = "http://desk.zol.com.cn/bizhi/755_8386_2.html"  # 目标网站
    html = requests.get(url)  # requests的get方法,参数填写url即可返回网页全部内容
    soup = BeautifulSoup(html.content, "html.parser")  # BeautifulSoup方法,第一个参数为完整的网页,上一句我们已经获得。
    # (接上行)第二个参数是网页解析器,这里我们使用比较方便的html.parser解析器。(如果html变量不用content的话将会返回访问网页的状态码)
    image_html = soup.find("img", id="layerDeskPic").attrs["src"]  # 在网页分析中已经阐明寻找的位置,img表情指定id里的src(图片网址)
    the_image = requests.get(image_html)  # 再次使用requests的get方法,参数为图片的网址。
    with open("图片.jpg", "wb+") as f:
        f.write(the_image.content)  # 写入文件,the_image的content属性,(the_image返回访问网页的状态码)


if __name__ == '__main__':
    pachong()

运行发现得到图片,一个1x1像素的图片…
然后我们将后边注释掉

import requests

from bs4 import BeautifulSoup


def pachong():
    url = "http://desk.zol.com.cn/bizhi/755_8386_2.html"  # 目标网站
    html = requests.get(url)  # requests的get方法,参数填写url即可返回网页全部内容
    soup = BeautifulSoup(html.content, "html.parser")  # BeautifulSoup方法,第一个参数为完整的网页,上一句我们已经获得。
    # (接上行)第二个参数是网页解析器,这里我们使用比较方便的html.parser解析器。(如果html变量不用content的话将会返回访问网页的状态码)
    image_html = soup.find("img", id="layerDeskPic").attrs["src"]  # 在网页分析中已经阐明寻找的位置,img表情指定id里的src(图片网址)

    print(image_html)

    # the_image = requests.get(image_html)  # 再次使用requests的get方法,参数为图片的网址。
    # with open("图片.jpg", "wb+") as f:
    #     f.write(the_image.content)  # 写入文件,the_image的content属性,(the_image返回访问网页的状态码)


if __name__ == '__main__':
    pachong()

输出查看内容,内容是《https://icon.zol-img.com.cn/article/slideNew/blank.gif》

这显然有误,因此我们猜测是网页结构发生了变化,我们再回到目标网站

审查元素,然后用元素选取选择右上角的放大按钮

python网页查询然后返回结果 python查找网页元素_python_08


python网页查询然后返回结果 python查找网页元素_python网页查询然后返回结果_09


可见图片的网址是这个

我们点一下这个按钮放大,然后关闭放大后的图片

python网页查询然后返回结果 python查找网页元素_状态码_10


可以对比发现,这个值变了,具体怎么变的我们不需要深究。

我们比较这两个值发现,变的只有中间的分辨率数字

https://desk-fd.zol-img.com.cn/t_s960x600c5/g5/M00/01/0F/ChMkJlbKwqqIJUCGAAHop_ytZA4AALGrQN-1PwAAei_545.jpg

http://desk.fd.zol-img.com.cn/t_s1920x1080/g5/M00/01/0F/ChMkJlbKwqqIJUCGAAHop_ytZA4AALGrQN-1PwAAei_545.jpg 因此我们只需要获取第一个网址,对字符串960x600c5替换为1920x1080即可

import requests

from bs4 import BeautifulSoup


def pachong():
    url = "http://desk.zol.com.cn/bizhi/755_8386_2.html"  # 目标网站
    html = requests.get(url)  # requests的get方法,参数填写url即可返回网页全部内容
    soup = BeautifulSoup(html.content, "html.parser")  # BeautifulSoup方法,第一个参数为完整的网页,上一句我们已经获得。
    # (接上行)第二个参数是网页解析器,这里我们使用比较方便的html.parser解析器。(如果html变量不用content的话将会返回访问网页的状态码)
    image_html = soup.find("img", id="bigImg").attrs["src"]  # 在网页分析中已经阐明寻找的位置,img表情指定id里的src(图片网址)
    image_html = change(image_html)  # 调用change函数
    the_image = requests.get(image_html)  # 再次使用requests的get方法,参数为图片的网址。
    with open("图片.jpg", "wb+") as f:
        f.write(the_image.content)  # 写入文件,the_image的content属性,(the_image返回访问网页的状态码)


def change(image_html):
    return image_html.replace("960x600c5", "1920x1080")  # 替换字符串


if __name__ == '__main__':
    pachong()

改写后的代码,运行,我们发现已经可以正常使用了,在程序的目录下的图片.jpg即是我们爬的图片!