爬虫02

在上一小节中我们已经拿到了想要爬取的页面的源代码了,后面我们就可以对代码进行分析从而提取出我们想要的东西了。
对于我们想要爬取的页面直接进入抓包工具进行分析

选中任意一张图片(如图中1)即可在对应的页面代码中显示出对应它的那段代码

在这里插入图片描述
我们需要的是图片的地址,有了地址就可以拿到图片从而保存图片,因此我们来分析一波:
首先定位到class值为’ui segment imghover’的div标签(图中2),然后点开第一个div标签(图中3),点开其下的a标签(图中4)发现a标签下的img标签(图中5)中的data-original藏有图片的地址(图中6)(可以将后面的url复制到浏览器中发现可以拿到这个图片)。
我们可以通过分析写出xpath表达式来爬取数据。

1.首先要获取class值为’ui segment imghover’的div标签下的所有子div标签

tree_list=tree.xpath('//div[@class="ui segment imghover"]/div')

2.遍历每个子div标签获取每个图片的url

for li in tree_list:
    #每次遍历时的标志变量也是一个标签因此可以继续使用xpath方法解析
    new_url=li.xpath('./a/img/@data-original')[0]
    image_title=li.xpath('./a/img/@title')[0]
    image_path='表情包Libs/图片'+str(count)+'.jpg'

3.对拿到的图片url发送请求,然后获取相应内容,将相应内容写入本地

#对于拿到图片的url,对其发送请求获取相应内容然后存入文件中
    response=requests.get(url=new_url,headers=headers)
    page_content=response.content
    with open(image_path,'wb') as fp:
        #将图片的相应内容写入到文件中
        fp.write(page_content)
        print("缓存完毕:"+image_title)

附上完整的代码及注释

#引入requests库
import requests
#引入lxml库是为了引入etree进行数据解析
from lxml import html
#引入os库是为了将爬取到的数据保存至本地
import os
#想要爬取页面的url
url='https://fabiaoqing.com/biaoqing'
#数据包中的User-Agent
headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36 Edg/89.0.774.77'
}
#利用requests的get方法发送请求,会返回一个响应对象response
response=requests.get(url=url,headers=headers)
#使用响应对象response的content属性获取响应对象的值
page_content=response.content
#利用html库的etree属性引入etree
etree=html.etree
#将相应内容作为参数传入etree对象的HTML方法中获得tree对象
tree=etree.HTML(page_content)
#利用tree对象的xpath方法进行解析,返回的是一个符合条件的标签的列表
tree_list=tree.xpath('//div[@class="ui segment imghover"]/div')
#如果本目录下不存在表情包Libs这个文件夹就创建
if not os.path.exists('表情包Libs'):
    os.mkdir('表情包Libs')
count=0
#对抓取到的标签列表进行遍历
for li in tree_list:
    #每次遍历时的标志变量也是一个标签因此可以继续使用xpath方法解析
    new_url=li.xpath('./a/img/@data-original')[0]
    image_title=li.xpath('./a/img/@title')[0]
    image_path='表情包Libs/图片'+str(count)+'.jpg'
    count+=1
    #对于拿到图片的url,对其发送请求获取相应内容然后存入文件中
    response=requests.get(url=new_url,headers=headers)
    page_content=response.content
    with open(image_path,'wb') as fp:
        #将图片的相应内容写入到文件中
        fp.write(page_content)
        print("缓存完毕:"+image_title)

总结

爬取数据时我们的步骤大致就是:
1.分析页面
2.发送请求
3.数据解析
4.保存本地
其中我们目前只说到了1分析页面,2发送请求
3数据解析常用的方法有(bs4库解析、xpath解析、正则解析)三种在后续会逐步带大家了解。
4保存本地就是文件操作,涉及到的操作就是文件的读写后续也会涉及到。
好啦今天就到这里了下次再见啦

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值