Ajax爬取唯美女孩图片


一、前言

最近学习爬虫,都是跟着教程做的,如今想摆脱教程,独立完成一个爬虫小项目,故作此文,总结项目过程中遇到的问题和解决方法。

二、实现项目

1.分析网页

首先打开目标网站,本次项目以 唯美女生 | 一双发现美的眼睛! 为目标,爬取其中的图片。我们打开网页,首先要右键鼠标检查源码,此时问题出现了,右键鼠标怎么都按不出来,更别说检查网页源代码了。因为这个网站有个阻止我们使用F12功能的js文件 disable-devtool.min.js。怎么解决呢,也简单,提前打开F12再进入目标网站即可。
打开网站后,我们发现该网站是使用AJAX动态加载数据的。ajax加载
那么我们在F12下的network选项卡里,切换到XHR,查找可能存在数据的AJAX请求。
Ajax请求
在众多AJAX中,我们找到了admin-ajax.php,这个请求包含了我们需要的数据,打开预览可以看到请求到的数据。
预览
请求找到了,接下来我们分析一下这个请求,切换回标头选项卡,我们发现该请求的链接是https://www.vmgirls.com/wp-admin/admin-ajax.php, 而请求方式是POST
POST
既然请求方式是POST,那么肯定有一个表单数据会跟随提交,否则访问不到数据。比如我们直接在浏览器新的窗口打开该链接,会出现以下情况。
没有参数
我们继续在表头选项卡下,找到该请求需要携带的参数如下
append,paged,action,query,page
通过分析多个请求,我们发现只有paged在变化,该参数代表我们请求的页码。
表单数据
至此网页分析完毕,进入代码爬取环节。

2.爬取网页

2-1、模拟POST请求

首先模拟该Ajax请求。我们传入参数page来表示爬取的页码:

post_url = 'https://www.vmgirls.com/wp-admin/admin-ajax.php'
headers = {
   
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 Edg/89.0.774.75'
}


def get_article_url(page):
    data = {
   
        'append': 'list-home',
        'paged': page,
        'action': 'ajax_load_posts',
        'query': '',
        'page': 'home'
    }
    resp = requests.post(url=post_url, data=data, headers=headers)

2-2、解析图集列表页面

请求到页面后,我们发现每一个图集的链接都是存在与以下路径:
图集链接
因此这一步我们要获取该页面下所有的图集链接,我们使用xpath来解析网页。

    text = resp.text
    html = etree.HTML(text)
    items = html.xpath('.//div[@class="col-6 col-md-3 d-flex py-2 py-md-3"]')
    for item in items:
        ar_url = item.xpath('.//div[@class="list-body"]/a/@href')[0]
        parse_img_page(ar_url)
        time.sleep(1
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值