爬取《宝可梦剑盾》资讯 并存储到mongodb

最近一直在玩switch的《宝可梦剑盾》,也没玩多久还有的资讯都不知道 又菜又爱玩 所以呢今天我们准备爬取《宝可梦剑盾》的资讯!!
在这里插入图片描述

一、分析百度资讯页面(宝可梦剑盾)

① 查找数据在什么地方

首先呢看看我们需要的数据是静态加载还是ajks动态加载
在这里插入图片描述
我们可以看到百度资讯的页面是有页数的 所以它是静态加载

小知识:一般静态加载的数据都会在网页源代码 而ajks动态加载会在数据接口

不管怎么样我们还是去看看需要的数据是在网页源代码里还是在数据接口

在这里插入图片描述
↑↑↑上图是网页源代码 我们可以看到它的数据 是在网页源代码

② 观察url
url翻页

我们需要观察页面翻页后url会发生什么变化以便我们爬虫翻页

第一页:

https://www.baidu.com/s?rtt=1&bsst=1&cl=2&tn=news&fr=image&ie=utf-8&word=%E5%AE%9D%E5%8F%AF%E6%A2%A6%E5%89%91%E7%9B%BE&x_bfe_rqs=03E80&x_bfe_tjscore=0.100000&tngroupname=organic_news&newVideo=12&rsv_dl=news_b_pn&pn=0

第二页:

https://www.baidu.com/s?rtt=1&bsst=1&cl=2&tn=news&fr=image&ie=utf-8&word=%E5%AE%9D%E5%8F%AF%E6%A2%A6%E5%89%91%E7%9B%BE&x_bfe_rqs=03E80&x_bfe_tjscore=0.100000&tngroupname=organic_news&newVideo=12&rsv_dl=news_b_pn&pn=10

我们可以看到前面好像是一模一样的 但是在最后有一个pn不一样 第一页pn=0 第二页pn=10 而一页刚好也是10个 那么差不多可以确定这个pn就是用于翻页

url中的16进制

在我们观察上面的url翻页时 是否有注意到url中有一串16进制的字符

word=%E5%AE%9D%E5%8F%AF%E6%A2%A6%E5%89%91%E7%9B%BE

我们观察下没有复制过来的时候是怎么样的
在这里插入图片描述
我们可以看到网页中的url里面的word=宝可梦剑盾 所以这一串16进制是宝可梦剑盾转来的


③ 整理爬虫思路
1.遍历range 进行翻页
for x in range(50):
    page_url = f'https://www.baidu.com/s?rtt=1&bsst=1&cl=2&tn=news&fr=image&ie=utf-8&word=%E5%AE%9D%E5%8F%AF%E6%A2%A6%E5%89%91%E7%9B%BE&x_bfe_rqs=03E80&x_bfe_tjscore=0.100000&tngroupname=organic_news&newVideo=12&rsv_dl=news_b_pn&pn={x * 10}'
2.使用urllib中的quote把宝可梦剑盾转成16进制并放入url
# 加载模块
from urllib import parse
# 使用模块把宝可梦剑盾转成16进制
bkm = parse.quote('宝可梦剑盾')
# 将16进制放入url中
for x in range(50):
    page_url = f'https://www.baidu.com/s?rtt=1&bsst=1&cl=2&tn=news&fr=image&ie=utf-8&word={bkm}&x_bfe_rqs=03E80&x_bfe_tjscore=0.100000&tngroupname=organic_news&newVideo=12&rsv_dl=news_b_pn&pn={x * 10}'
3.使用xpath爬取网页源代码中的标题和详情页
lis = html.xpath('//div[@id="content_left"]/div/div')
for li in lis:
    title = li.xpath('./div/h3/a//text()'
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值