网页爬虫抓取百度图片(Python视频写了一个爬虫程序,实现简单的网页图片下载)

优采云 发布时间: 2021-10-13 08:20

  网页爬虫抓取百度图片(Python视频写了一个爬虫程序,实现简单的网页图片下载)

  一、简介

  这段时间我一直在学习 Python 的东西。我听说过 Python 爬虫有多强大。我现在才学会这个。跟着小乌龟的Python视频写了一个爬虫程序,可以实现简单的网页图片下载。

  二、代码

  __author__ = "JentZhang"

import urllib.request

import os

import random

import re

def url_open(url):

\'\'\'

打开网页

:param url:

:return:

\'\'\'

req = urllib.request.Request(url)

req.add_header(\'User-Agent\',

\'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36\')

# 应用代理

\'\'\'

proxyies = ["111.155.116.237:8123","101.236.23.202:8866","122.114.31.177:808"]

proxy = random.choice(proxyies)

proxy_support = urllib.request.ProxyHandler({"http": proxy})

opener = urllib.request.build_opener(proxy_support)

urllib.request.install_opener(opener)

\'\'\'

response = urllib.request.urlopen(url)

html = response.read()

return html

def save_img(folder, img_addrs):

\'\'\'

保存图片

:param folder: 要保存的文件夹

:param img_addrs: 图片地址(列表)

:return:

\'\'\'

# 创建文件夹用来存放图片

if not os.path.exists(folder):

os.mkdir(folder)

os.chdir(folder)

for each in img_addrs:

filename = each.split(\'/\')[-1]

try:

with open(filename, \'wb\') as f:

img = url_open("http:" + each)

f.write(img)

except urllib.error.HTTPError as e:

# print(e.reason)

pass

print(\'完毕!\')

def find_imgs(url):

\'\'\'

获取全部的图片链接

:param url: 连接地址

:return: 图片地址的列表

\'\'\'

html = url_open(url).decode("utf-8")

img_addrs = re.findall(r\'src="(.+?\.gif)\', html)

return img_addrs

def get_page(url):

\'\'\'

获取当前一共有多少页的图片

:param url: 网页地址

:return:

\'\'\'

html = url_open(url).decode(\'utf-8\')

a = html.find("current-comment-page") + 23

b = html.find("]", a)

return html[a:b]

def download_mm(url="http://jandan.net/ooxx/", folder="OOXX", pages=1):

\'\'\'

主程序(下载图片)

:param folder:默认存放的文件夹

:param pages: 下载的页数

:return:

\'\'\'

page_num = int(get_page(url))

for i in range(pages):

page_num -= i

page_url = url + "page-" + str(page_num) + "#comments"

img_addrs = find_imgs(page_url)

save_img(folder, img_addrs)

if __name__ == "__main__":

download_mm()

  三、总结

  因为代码中访问的网址已经使用了反爬虫算法。所以爬不出来我想要的图片,所以,就做个爬虫的笔记吧。仅供学习参考【捂脸】。 . . .

  最后:我把jpg格式改成gif了,还是能爬到很烂的gif:

  

  第一张图只是反爬虫机制的占位符,没有任何内容。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线