python爬取百度图片代码,Python爬虫爬取网站图片代码

  python爬取百度图片代码,Python爬虫爬取网站图片代码

  爬虫发起请求的基本流程:通过HTTP库向目标站点发送请求,请求中可以包含额外的头等信息,等待服务器响应得到响应内容:如果服务器能正常响应,就会得到响应,响应的内容就是要获取的页面内容,可能是HTML,也可能是JSON字符串。二进制数据(图片或视频)等类型解析内容:获取的内容可能是HTML,可以通过正则表达式和页面解析库进行解析,Json,可以直接转化为Json对象解析,也可能是二进制数据,可以保存或进一步处理。保存数据:以各种形式保存,可以保存为文本,或保存在数据库中,或保存特定格式的文件。1.百度图片爬虫这里有一招,百度

  对于百度图片的网址,普通爬虫只会接收到非滚轮前界面显示的所有信息。

  所以这里有个小技巧,比如上图红框中的信息索引。在这里用字符flip代替index可以实现图片的分页。但实际上所有分页的图片都存在于一个接口中,也就是说爬虫不需要处理分页。

  实现代码如下:import re

  导入请求

  导入操作系统

  # 1.获取网址

  Word=input(想看有颜色的图片,请输入:)

  如果不是os.path.exists(word):

  os.mkdir(word)

  URL= https://image . Baidu . com/search/flip?TN=baiduimage PS=1 CT=201326592 lm=-1 cl=2 NC=1 ie=utf-8 word= word

  head={ User-Agent : Mozilla/5.0(Macintosh;英特尔Mac OS X 10 _ 15 _ 7)apple WebKit/537.36(KHTML,像壁虎一样)Chrome/91 . 0 . 4472 . 164 Safari/537.36 }

  # 2.获取网页源代码

  r=requests.get(url,headers=head)

  # response [200] 200状态代码请求成功。

  #ret=r.text #ret获取网页的源代码。

  Ret=R .内容。decode(‘UTF-8’)# ret获取网页源代码。

  # 3.获取所有图片的网址

  #objURL

  result=re . find all( objURL :(。*?),,ret)

  # 4.保存所有图片

  因为我的结果是:

  尝试:

  r=requests.get(i,timeout=3)

  例外情况为e:

  打印(e)

  继续

  #拍些照片。拍50张照片

  path=i[0:50]

  #确定url的最后10位数字是否是图片类型的结尾

  end=re.search(r\)。jpg$\。jpeg$\。gif$\。png$ ,路径)

  如果end==None:

  路径=路径。 jpg

  打印(路径)

  path=re sub(/,,path)

  以open(word / path, wb )为f:

  在f.write(r.content)代码中,输入你想要的关键词,修改想要的图片号参数,就可以下载相应的图片。

  2.网站图片

  这类专门的图片网站通常包含每张图片的分页选项和链接,对应图片的详情页,其中详情页通常包含多张图片。

  因此,爬虫不仅需要处理分页,还需要处理并获取每个页面每个链接下的详细界面。

  实现代码如下:导入os

  有35页。

  http://ailuotuku.com/page_1.html

  从4导入美汤#网页分析

  导入#常规匹配

  导入urllib.request,urllib.error #开发url

  导入请求

  #创建正则表达式对象来表示规则

  #图片链接

  findlink=re.compile(r a href=(。*?) target=_blank )

  #图片标题

  findtitle=re.compile(r h1(。*?)/h1’)

  #图片

  findimg=re.compile(r img。*?src=(。*?).*? ,回复。s)

  #爬升数据

  def getdata():

  #1.调用函数获取页面

  对于范围内的I(1.36):

  URL= http://ailuotuku . com/page _ % s . html % I

  html1=askURL(url)

  #2.解析数据

  soup1=BeautifulSoup(html1,“html.parser”)

  对于soup1.find_all(div ,class_=update_area_content ):

  item1=str(item1)

  #re库查找正则表达式

  link=re.findall(findlink,item1)

  对于链接中的j:

  j=str(j)

  html 2=askul(j)

  soup2=BeautifulSoup(html2,“html.parser”)

  data_title=[]

  data_img=[]

  对于soup2.find_all(div ,class_=main_left single_mian ):

  item2=str(item2)

  title=re.findall(findtitle,item2)

  对于soup2.find_all(div ,class_=content_left )中的item3:

  item3=str(item3)

  image=re.findall(findimg,item3)

  对于图像中的img:

  数据_img .追加(img)

  打印(标题)

  打印(数据_图像)

  #保存图片

  对于标题中的文件名:

  对于数据_img中的网址:

  file=url.split(/)[-1]

  head={

  用户代理:‘Mozilla/5.0(麦金塔;英特尔Mac OS X 10 _ 15 _ 7)苹果WebKit/537.36(KHTML像壁虎)Chrome/92。0 .4515 .93 Safari/537.36 }

  response=requests.get(url,headers=head)

  如果不是OS。路径。存在( data/% s % filename):

  os.mkdir(data/%s%filename)

  用打开( data/%s/%filename文件, wb )作为女:

  f .写(响应。内容)

  否则:

  及格

  def askURL(url):

  head={ User-Agent : Mozilla/5.0(Macintosh;英特尔Mac OS X 10 _ 15 _ 7)苹果WebKit/537.36(KHTML像壁虎)Chrome/92。0 .4515 .93 Safari/537.36 }

  #伪装浏览器

  请求=URL库。请求。请求(URL,headers=head)

  html=

  尝试:

  响应=urllib。请求。urlopen(请求)

  html=response.read().解码(“utf-8”)

  除了urllib.error.URLError作为e:

  如果hasattr(e,代码):

  打印(电子代码)

  if hasattr(e, reason ):

  打印(原因)

  返回超文本标记语言

  def main():

  data=getdata()

  if __name__==__main__ :

  主()

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: