selenium进行xhs图片爬虫:05xhs一个博主的全部文章链接获取

在今天的文章中,是需要进行保持登录状态的,如果没有登录状态。会导致xhs博主下的文章数量缺失。

我使用的仍然是selenium远程调试,也就是我之前说的selenium操作已经打开的浏览器。这块内容配置还是挺简单的,大家可以去试试。

今天要实现的功能就是,使用selenium进行获取到xhs指定博主页面下的所有文章链接。

# TODO 实现免登录爬虫
options = Options()
options.add_experimental_option("debuggerAddress", "127.0.0.1:9527")
driver = webdriver.Chrome(options=options)
time.sleep(3)

这块内容就是实现免登录功能,给你三秒钟时间,打开Chrome(你也可以之前打开了)。

url = "https://www.xiaohongshu.com/user/profile/6520e7d10000000024017cfc"
# url = "https://www.xiaohongshu.com/user/profile/6262794f000000002102a1e4"
# 访问某个网页
driver.get(url)
driver.maximize_window()

这块内容就是去访问该网址,并且最大化浏览器页面。方便后续操作。

# TODO 该函数是用来返回每次网页中的链接最后数字,如https://www.xiaohongshu.com/explore/65f23536000000000d00f0cd的65f23536000000000d00f0cd,方便后续构造函数
def get_url_code(content):
    url_pattern = re.compile(r'href="/explore/(.*?)"')
    matches = url_pattern.findall(content)
    return matches

这块内容,就是使用正则表达式,对网页中的每个图文或者视频链接的提取,当然我这里提取的是网页链接的最后片段的数字,后续可以进行拼接,产生可以访问的链接。

temp_height = 0
url_code_list = []
while True:
    content = driver.page_source
    new_url_list = get_url_code(content)
    # print(new_url_list)
    url_code_list += new_url_list
    # 循环将滚动条下拉
    driver.execute_script("window.scrollBy(0,600)")
    # sleep一下让滚动条反应一下
    time.sleep(1)
    # 获取当前滚动条距离顶部的距离
    check_height = driver.execute_script(
        "return document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;")
    # 如果两者相等说明到底了
    if check_height == temp_height:
        print("到底了")
        break
    temp_height = check_height
    print(check_height)

我这段代码的功能就是用来实现滚轮往下滚,直到最底部。

由于xhs等平台,使用的是异步请求,你滚动过后,浏览器中的源代码啥的也会相应产生变化。因此我需要每滚动一次或者几次,就得调用一下content = driver.page_source重新获取一下网页的源代码,然后对其进行获取链接的最后一段字符(后续拼接成网址)。
也就是new_url_list = get_url_code(content)获得了每次的链接最后一段字符。每次返回的都是一个列表。

然后我使用列表相加,将每次获得的最后一段字符,整合到一个大的列表中。后续对其进行去重(按顺序排序)。

这里需要注意的是,window.scrollBy(0,600)的600表示每次滚动的多少,不能太大,否则就会导致一部分数据跳过去了,也不能太小,不然时间耗不起。

然后我需要计算一下是否到底部,没到就继续滚动。

unique_url_code_list = list(Counter(url_code_list))
print(unique_url_code_list)
print(len(unique_url_code_list))

这段代码就是用来对一个列表去重的,COunter可以保证顺序,乱序的后果就是图片乱了,影响较大。我在其他文章中也介绍过两个列表,甚至多个列表按顺序去重的代码,可以学习一下。

# 要添加的字符串
added_string = 'https://www.xiaohongshu.com/explore/'
# 创建一个空列表来存放结果
new_url_list = []

# 循环遍历原始列表,将每个元素加上相同的字符串并存放到新的列表中
for x in unique_url_code_list:
    new_url_list.append(added_string+x)

print(new_url_list)  # 输出加上相同字符串后的新列表
new_url_list = new_url_list[::-1]  # 倒序变成顺序
print(new_url_list)

这段代码就是用来拼接的,将列表中的每个链接最后一段字符拼接上前面的内容,从而变成一个完整的文章网址。

此外,我这里还将链接顺序从现在-过去,转了一下,变成从过去-现在,符合更新文章的逻辑顺序。

当然,也可以将上面的拼接+逆序封装成一个函数。

def get_url_list(unique_url_code_list):
    added_string = 'https://www.xiaohongshu.com/explore/'
    # 创建一个空列表来存放结果
    new_url_list = []

    # 循环遍历原始列表,将每个元素加上相同的字符串并存放到新的列表中
    for x in unique_url_code_list:
        new_url_list.append(added_string + x)

    print(new_url_list)  # 输出加上相同字符串后的新列表
    new_url_list = new_url_list[::-1]  # 倒序变成顺序
    return new_url_list

最后的运行结果如下:
在这里插入图片描述

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python合法网页爬虫工具项目分享 内容概览: 这个分享包涵了我开发的Python爬虫工具项目,主要用于合法爬取某些网页信息。以下是主要内容: 源代码:包括Python代码和相关脚本。这些代码展示了如何使用Python进行网页抓取、解析和数据提取。 项目文件:除了代码,我还分享了整个项目的文件,包括设计稿、图标、图片等资源。这些资源对于理解项目背景和设计思路至关重要。 文档与操作手册:为了方便他人理解和使用我的作品,我编写了详细的操作手册和使用说明,同时提供了一份Markdown格式的文档,概述了项目的主要功能和特点。 学习笔记:在项目开发过程中,我记录了大量的学习笔记和心得体会。这些笔记不仅有助于理解项目的开发过程,还能为学习Python爬虫技术提供宝贵的参考资料。 适用人群: 这份项目合集适用于所有对Python爬虫开发感兴趣的人,无论你是学生、初学者还是有一定经验的开发者。无论你是想学习新的技术,还是想了解一个完整的项目开发流程,这份资料都将为你提供极大的帮助。 使用建议: 按部就班地学习:建议从基础的Python爬虫开发开始,逐步深入到实际应用中。通过实践,逐步掌握Python爬虫开发的各项技能。 参考项目文件和笔记:项目文件和笔记提供了丰富的背景信息和开发经验。在学习的过程中,不妨参考这些资料,以帮助你更好地理解和学习。 动手实践:Python爬虫开发是一门实践性很强的技能。通过实际操作,你可以更好地掌握Python爬虫开发的各项技能,并提高自己的实践能力。Python合法网页爬虫工具项目分享 内容概览: 这个分享包涵了我开发的Python爬虫工具项目,主要用于合法爬取某些网页信息。以下是主要内容: 源代码:包括Python代码和相关脚本。这些代码展示了如何使用Python进行网页抓取、解析和数据提取。 项目文件:除了代码,我还分享了整个项目的文件,包括设计稿、图标、图片等资源。这些资源对于理解项目背景和设计思路至关重要。 文档与操作手册:为了方便他人理解和使用我的作品,我编写了详细的操作手册和使用说明,同时提供了一份Markdown格式的文档,概述了项目的主要功能和特点。 学习笔记:在项目开发过程中,我记录了大量的学习笔记和心得体会。这些笔记不仅有助于理解项目的开发过程,还能为学习Python爬虫技术提供宝贵的参考资料。 适用人群: 这份项目合集适用于所有对Python爬虫开发感兴趣的人,无论你是学生、初学者还是有一定经验的开发者。无论你是想学习新的技术,还是想了解一个完整的项目开发流程,这份资料都将为你提供极大的帮助。 使用建议: 按部就班地学习:建议从基础的Python爬虫开发开始,逐步深入到实际应用中。通过实践,逐步掌握Python爬虫开发的各项技能。 参考项目文件和笔记:项目文件和笔记提供了丰富的背景信息和开发经验。在学习的过程中,不妨参考这些资料,以帮助你更好地理解和学习。 动手实践:Python爬虫开发是一门实践性很强的技能。通过实际操作,你可以更好地掌握Python爬虫开发的各项技能,并提高自己的实践能力。Python合法网页爬虫工具项目分享 内容概览: 这个分享包涵了我开发的Python爬虫工具项目,主要用于合法爬取某些网页信息。以下是主要内容: 源代码:包括Python代码和相关脚本。这些代码展示了如何使用Python进行网页抓取、解析和数据提取。 项目文件:除了代码,我还分享了整个项目的文件,包括设计稿、图标、图片等资源。这些资源对于理解项目背景和设计思路至关重要。 文档与操作手册:为了方便他人理解和使用我的作品,我编写了详细的操作手册和使用说明,同时提供了一份Markdown格式的文档,概述了项目的主要功能和特点。 学习笔记:在项目开发过程中,我记录了大量的学习笔记和心得体会。这些笔记不仅有助于理解项目的开发过程,还能为学习Python爬虫技术提供宝贵的参考资料。 适用人群: 这份项目合集适用于所有对Python爬虫开发感兴趣的人,无论你是学生、初学者还是有一定经验的开发者。无论你是想学习新的技术,还是想了解一个完整的项目开发流程,这份资料都将为你提供极大的帮助。 使用建议: 按部就班地学习:建议从基础的Python爬虫开发开始,逐步深入到实际应用中。通过实践,逐步掌握Python爬虫开发的各项技能。 参考项目文件和笔记:项目文件和笔记提供了丰富的背景信息和开发经验。在学习的过程中,不妨参考这些资料,以帮助你更好地理解和学习。 动手实践:Python爬虫开发是一门实践性很强的技能。通过实际操作,你可以更好地掌握Python爬虫开发的各项技能,并提高自己的实践能力。Python合法网页爬虫工具项目分享 内容概览: 这个分享包涵了我开发的Python爬虫

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

knighthood2001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值