Python初中级网络爬虫实战演练(一)之抓取照片

摘要:大家的总体目标是抓取这一连接里边的一个性化感讨人喜欢的小妹姐的照片随后免费下载出来,如何样大伙儿不是是有点儿激动,空话很少说,我们立即刚开始吧最先,开启上边的连接...

大家的总体目标是抓取这一连接里边的一个性化感讨人喜欢的小妹姐的照片随后免费下载出来,如何样大伙儿不是是有点儿激动,空话很少说,我们立即刚开始吧

最先,开启上边的连接,大家首先看看网页页面的构造:

大家要取得每一张大图图片的详细地址,也有每一个分页查询的详细地址

它是照片的详细地址

 

它是分页查询的详细地址

 

因此,大家能够根据 

img_tags=soup.find("div",class_="content").find("center").find_all("img")

获得到照片标识,在获得其src特性来获得照片的连接

 

根据

page_tags=soup.find("div",attrs={"id":"pages"}).find_all("a")

获得分页查询的a标识,在获得其href特性来获得分页查询的连接,每一个分页查询大约有3,4幅图片,一个小妹姐就类似有三四十幅图片

 

接下去大家要写一个类来完成照片的爬取和储存

# coding=utf-8
import requests
from bs4 import BeautifulSoup
from urllib.parse import urlparse
import os,time,random
url=""
class dl_plmm:
 def __init__(self,url):
 self.url=url
 urlinfo=urlparse(url)
 #self.baseurl用于储存网站域名,即:/"+loc
 print(self.baseurl)
 #转化成一个结合用于去重复,该结合用以储存分页查询连接
 self.page_links=set()
 #开启网页页面并获得內容
 def openurl(self,url):
 headers={
 "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36",
 "Referer":"t/aiyouwu/"
 #恳求网页页面,而且恳求头包括了访问器信息内容和Referer,假如沒有Referer,是没法恳求到照片的
 res=requests.get(url,headers=headers)
 if res.status_code == 200:
 #回到网页页面的內容
 return res.content
 else:
 print(res.text)

soup=BeautifulSoup(content,"html.parser") page_tags=soup.find("div",attrs={"id":"pages"}).find_all("a") for page_tag in page_tags: self.page_links.add(page_tag['href']) #浏览全部目录页并免费下载照片 def dl_imgs(self,page_link): page_content=self.openurl(self.baseurl+page_link) #目录页的连接不是含网站域名的,这儿将它拼凑为详细url soup=BeautifulSoup(page_content,"html.parser") img_tags=soup.find("div",class_="content").find("center").find_all("img") if len(self.page_links)==0: return for img_tag in img_tags: img_src=img_tag["src"] print("免费下载照片:%s" % (img_src)) img_content=self.openurl(img_src) #print(img_content) #界定文档名,文档名用時间戳和任意数据取名,以免文档名有反复 fn=str(int(time.time()))+str(random.randint(100,999))+".jpg" with open(fn,"wb") as f: f.write(img_content) #刚开始运作 def run(self): #获得全部page的url self.store_page_links() #假如不会有imgs文档夹,就建立一个imgs文档夹 if not os.path.isdir("imgs"): os.mkdir("imgs") #转换当今文件目录为imgs os.chdir("imgs") #免费下载照片 for page_link in self.page_links: self.dl_imgs(page_link)

全部全过程便是先在原始url的网页页面获得全部分页查询的详细地址,而且存到自变量page_links中,随后解析xml恳求page_links中的全部分页查询,从每一个分页查询中获得照片的详细地址,最终恳求这种照片详细地址随后免费下载照片。openurl方式既能够恳求分页查询,又能够恳求照片,回到的是恳求到的內容。

在抓取的全过程中,爬照片的情况下被提醒403 Forbidden,后台管理发觉是另一方干了一点小小的的防御力,以便避免别的网站盗取她们的照片,该网站干了Referer的认证,假如对照片传出恳求的详细地址并不是t/aiyouwu/得话就严禁浏览。因此之后我还在恳求的header头里加入了 Referer : t/aiyouwu/ 就处理了这一难题。

header头怎样获得,能够F12,查询访问器中的恳求头信息内容来获得

 

 

最终,大家看一下抓取的成效:

 

大伙儿安心,全是一切正常的写真照片,都衣着衣服裤子的,但是它是技术性blog,并不是写真网站,我都是加上了马赛克,假如大伙儿爱看,就动手能力自身完成这一脚本制作吧!

 

张柏沛IT技术性blog > Python初中级网络爬虫实战演练(一)之抓取照片网的照片

点一下拷贝转截该一篇文章



联系我们

全国服务热线:4000-399-000 公司邮箱:343111187@qq.com

  工作日 9:00-18:00

关注我们

官网公众号

官网公众号

Copyright?2020 广州凡科互联网科技股份有限公司 版权所有 粤ICP备10235580号 客服热线 18720358503

技术支持:小程序制作