python爬虫怎么爬取图片

阅读: 评论:0

python爬虫怎么爬取图片

python爬虫怎么爬取图片

参考资料:

Requests库使用方法与urrlib用法较为类似,但更为简单,下面使用requests来进行图片的抓取.

1. 先写出主函数的代码

import requests

import os

import re

def download_mm(folder='mmImages', pages=10):

"""

下载十个页面的图片,并将其保存进folder目录

"""

#创建保存图片的文件夹

os.mkdir('folder')

os.chdir('folder')

#下载图片页面初始地址

url = '/'

#图片页面地址全名为,可看出图片地址为'url'+'页面数'+ '#comments',先定义一个函数get_page(url)来获取page_num

page_num = int(get_page(url))

#有了图片所在页面的全名地址就可以爬取图片的源地址了,这里我们仅下载十个页面的图片

for i in range(pages):

page_num -= i

#获得十个网页的图片地址,进入页面时我们处于最新页面,因此最终得到的是此页以及前九页的地址

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

#获得多个图片网址后还需获得每一个图片的源地址才能下载到每一张图片,此处定义一个函数find_images来获取每张图片源地址

img_addrs = find_images(page_url)

#从每张图片源地址下载图片到folder文件夹

save_imgs(folder, img_addrs)

2. 编写在主函数中需要用到的功能函数的代码

(1)先在url = '/' 页面爬出最新页面数(即page_num)

def get_page(url):

"""

返回单前网页page数,也即url = '/'的page数

"""

#爬取html页面内容

html= url_open(url).text

#找出含有本页网址的那一段字符串

page=re.search(r'>[[0-9]{4}]<',html).group()

#从这一段字符串提取出页面数

page_number=re.search(r'[0-9]{4}',page).group()

return page_number

(2)主函数中利用for循环拼接出十个页面的url,然后利用find_images函数找出每一个页面的的每一张图片的源地址

def find_images(url):

"""

找到图片的源地址

"""

#爬取当前html页面内容

html=url_open(url).text

#找出包含图片源地址的这一段字符串

img_src0=re.findall(r'

#从包含图片源地址的这一段字符串中提取图片的源地址

img_src1=[img_src[10:] for img_src in img_src0]

return img_src1

(3)找出图片源地址后利用再去下载图片

def save_imgs(folder, img_addrs):

"""

保存图片

"""

for img_addr in img_addrs:

#将图片地址的倒数第二个字符串作为图片名

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

#以二进制的方式(content而非text)保存图片源地址内容

img=url_open('http:{}'.format(img_addr)).content

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

f.write(img)

(4)由于打开网页这一步被反复用到,因此可编写一个函数直接调用即可

def url_open(url):

"""

爬取网页

"""

headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}

req = (url,headers=headers)

return req

3.总结

(1)在这个爬虫程序中我们想要爬取多个页面内容,因此需要找出这些页面地址的关联,否则只能一个个输入地址来爬取,因此一开始我们需要先爬取第一个页面对其html内容进行分析,找出page_num.

(2)找出规律后利用一个简单的循环便可以爬取多个页面.

(3)对于每一个含有多个图片的页面,需要分析爬取每一张图片的地址才能进行下载

(4)爬取到图片源地址后便可以进行下载(爬取网页并以二进制方式保存)

(5)编写代码的过程中应尽量使得每一个函数仅执行一个功能,如此既方便调用出错时也方便调试查找bug.

4. 利用requests实现Python爬虫入门 (一)中以urllib编写的 交互式有道翻译请求:

import requests

import json

url = '=dict&smartresult=rule&smartresult=ugc&sessionFrom=/'

data = dict()

data = dict()

data['type'] = 'AUTO'

data['i'] = input("Plz input what you want to translate: ")

data['doctype'] = 'json'

data['xmlVersion'] = '1.8'

data['keyfrom'] = 'fanyi.web'

data['ue'] = 'UTF-8'

data['action'] = 'FY_BY_CLICKBUTTON'

data['typoResult'] = 'true'

r = requests.post(url, data=data)

trans_response = r.json()['translateResult'][0][0]['tgt']

print('翻译结果: ', trans_response)

本文发布于:2024-01-28 18:23:30,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064374139359.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:爬虫   图片   python
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23