Python图片抓取实操
爬取效果如下(别问我为什么被分成了两张还有去不掉的水印,不然网站怎么赚钱):

爬取链接为(千图网的图片,顺便吐槽一下,这个有些图片是分两半的!!!):
https://www.58pic.com/piccate/10-0-0-p1.html
记得先F12看所需要的内容具体位置和代码,可以找出,图片列表需要的href="//www.58pic.com/sucai/19381028.html":
免费下载
详细页面所需要的图片链接src="//preview.qiantucdn.com/58picmark/back_origin_pic/19/38/10/28M58PICdRdmHaG8694atMaRk.JPG!w1024_small" class="show-area-pic":

记得新建一个存储图片的文件夹picture。
抓取代码如下:
import socket
import re
import requests
from bs4 import BeautifulSoup
from lxml import etreedef test_pachong():url = r"https://www.58pic.com/piccate/10-0-0-p1.html"headers = {'user-agent': 'my-test/0.0.1','Referer':'https://www.58pic.com/piccate/10-0-0-p1.html'}html = requests.get(url,headers).textsoup = BeautifulSoup(html, 'lxml')infoData = soup.find_all(name='a', attrs={'class': 'thumb-box'})num = len(infoData)for j in range(num):picinfo = str(infoData[j])if '''target="_blank"''' in picinfo:rex1 = re.compile("href=\"(.+?)\"")pic_url = rex1.findall(picinfo)[0]try:get_picInfo(pic_url)except:print('异常url是{}'.format(pic_url))
def get_picInfo(pic_url):headers = {'user-agent': 'my-test/0.0.1','Referer':'https://www.58pic.com/piccate/10-0-0-p1.html'}url = "https:"+pic_urlhtml = requests.get(url,headers).textsoup = BeautifulSoup(html, 'lxml')infoData = soup.find_all(name='img',attrs={'class':'show-area-pic'})num = len(infoData)img_title = ''img_info = ''for j in range(num):info = str(infoData[j])rex1 = re.compile("title=\"(.+?)\"")rex2 = re.compile("src=\"(.+?)\"")infoData1 = rex1.findall(info)[0]infoData2 = rex2.findall(info)[0]img_url = "http:"+infoData2img_title = infoData1+'.jpg'print(img_title,'--url--',img_url)if num > 1: #这里确认是图片被网站分成了两部分,暂时还没时间处理能拼接这两部分图片if j == 0:save_img('picture\\'+img_title,requests.get(img_url,headers).content)else:img_title = infoData1+str(j)+'.jpg'save_img('picture\\'+img_title,requests.get(img_url,headers).content)else:save_img('picture\\'+img_title,requests.get(img_url,headers).content)
test_pachong()
最后就是保存我们通过url拿到的图片源requests.get(img_url,headers).content,代码如下:
def save_img(file_name,img):
'''保存图片'''
with open (file_name,'wb') as save_img:
save_img.write(img)
print ('正在下载{}'.format(file_name))
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
