python抓取动态网页(实战分析网站结构,确定我们要的数据内容;image唯美图片)

优采云 发布时间: 2022-03-06 04:01

  python抓取动态网页(实战分析网站结构,确定我们要的数据内容;image唯美图片)

  前言

  每个人都需要互相帮助,而我所要做的就是呈现给大家看。

  例如,有人可以背一本你不会背的书,有人可以做一个你不会做的问题,有人你愿意推迟到明天,有人今天会努力完成它,对不起,你想要什么工作只能别人做,自己想要的生活也只能别人过!

  教师讲授职业以解决疑虑。繁殖的力量就是穿透这些东西,然后才能长出新的叶子。共勉!

  - 实战

  分析网站的结构,确定我们要抓取的数据内容;

  

  图片

  审美画面是对绝对美的追求,强调超越生活的纯粹美,是对完美形式和完美艺术技巧的不断追求。

  

  图片

  右键Chrome浏览器查看网络,分析网站的结构;发现这个网页内容很多。单页获取图片数据很简单,但这就是我们的风格?不; 绝对不。即使它是一个非常简单的逻辑,我们也必须以不同的方式使其复杂化。这是托尼先生的程序;追求纯技术。

  希望能给更多的编程从业者带来一些优质的文章。

  第一步:请求网络并获取服务器返回的数据

  不管怎样,我们先获取数据内容;因为检测网站中是否有反爬的唯一因素就是获取它的数据内容;看看能不能正常获取。

  这里需要安装 2 个库:

  pip install requests 网络请求库

  pip install lxml 数据解析库

  导入请求

  网址='#39;

  html=requests.get(url).content.decode('gbk')

  打印(html)

  接下来,通过分析;我看到网站里面所有内容的页数都很大,有1153页的数据,所以我想,如果只是拿到几页数据内容,真的很容易!但是如果我在爬其他页面,我是否需要担心它是否有这么多的数据;毕竟每一页的数据内容都不一样;这绝对满足不了我对科技的渴望,所以......

  

  图片

  

  图片

  第 2 步:解析数据

  从 lxml 导入 etree

  # 动态获取最后一页数据

  page=etree.HTML(html).xpath('//a[@text="last page"]/@href')[0].split('_').split('.')[0]

  # list_20_1153.html ---> 1152

  打印(页)

  接下来在处理的时候,第一页数据和第二页数据的url不一样;并且无法单独获取第二页及后续所有页面的数据;所以……只能拼接。

  url_list=[]

  网址='#39;

  url_list.append(url)

  html=requests.get(url).content.decode('gbk')

  # 打印(html)

  # 谓词

  page=etree.HTML(html).xpath('//a[@text="last page"]/@href')[0].split('_').split('.')[0]

  对于范围内的项目(2,int(page)+1):

  url_list.append(url+'list_20_{}.html'.format(str(item)))

  打印(url_list)

  

  图片

  至此,我们已经能够动态获取所有页面的链接;我很高兴拥有它;迄今为止; 我们已经跨过了第一步;之后,我们需要获取每个页面的图片详情页面以进行下一步。准备数据处理。

  对于 url_list 中的 url_item:

  img_url=etree.HTML(requests.get(url_item).text).xpath('//div[@class="ABox"]/a/@href')

  打印(img_url)

  

  图片

  

  图片

  网站 数据的每一次突破都像是我们的战利品。这就是对技术着迷的容易程度。

  接下来的事情越来越有趣了!我们需要再次分析网站详情页;在分析过程中,我发现了一件非常有趣的事情;之前的获取方式很相似……emmmmmm,这里就不细说了!每个人都会自己分析。

  

  图片

  

  图片

  所以……为了让程序越来越好玩;接下来,让我们改变它;

  # 在单个文件详情页面

  def get_img_urls(img_urls):

  html=requests.get(img_urls)

  html.encoding='gbk'

  数据=etree.HTML(html.text)

  # 标题

  title=data.xpath('//div[@class="wrapper clearfix imgtitle"]/h1/text()')[0]

  #总页数

  page=data.xpath('//div[@class="wrapper clearfix imgtitle"]/h1/span/span[2]/text()')[0]

  img['1']=data.xpath('//a[@class="down-btn"]/@href')[0]

  打印(标题,页面)

  对于范围内的项目(2,int(page)+1):

  text=requests.get(img_urls.replace('.html','_%s.html'%str(item))).text

  img_url = etree.HTML(text).xpath('//a[@class="down-btn"]/@href')[0]

  返回标题,img

  第 3 步:数据存储

  在下载数据部分;考虑到我要下载的数据图片-->是原图,而且很多图片的内存比例不一样;如果文件太大,可能会导致内存不足;我们在学习的时候,不需要考虑这个因素,但托尼不这么认为;因为如果有一天每个人都真正学到了一些东西并进入了企业;这时候就要考虑程序优化的问题了;它可以更好地让我们编写高质量的代码程序;这也是考验我们的基本功是否真的扎实;当我们下载大文件时,为了防止它占用过多的内存;所以我做了数据流操作处理

  # 下载图片

  def 下载图片(网址,路径,名称):

  # 法官

  如果 os.path.exists(path):

  经过

  别的:

  os.mkdir(路径)

  响应=requests.get(url)

  如果 response.status_code==200:

  以 open(path+'/%s'%name,'ab') 作为文件:

  对于 response.iter_content() 中的数据:

  file.write(数据)

  # 清空缓存

  文件.flush()

  print('%s 下载完成!'%name)

  数据块处理

  

  图片

  第四步:代码整理

  对于 img_url 中的 img_urls:

  标题,img=get_img_urls(img_urls)

  对于 img.keys() 中的 img_url_item:

  path='/Users/lucky/PycharmProjects/Module_Tony_Demo/Module_12_24/tony_img/%s'%title

  download_pic(url=img_url_item,path=path,name='%s.jpg'%(title+img_url_item))

  显示结果

  全效

  

  图片

  在这个浮躁的时代;还是有人能坚持章节原创;

  如果这篇文章对你的学习有帮助——你可以点赞+关注!更多新的 文章 将不断更新。

  支持原创。感激!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线