首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无法使用请求从网页中获取所有链接

无法使用请求从网页中获取所有链接
EN

Stack Overflow用户
提问于 2020-05-26 05:08:58
回答 3查看 427关注 0票数 7

我正在尝试获得连接到这个网页中的每个图像的所有链接。

如果让selenium脚本向下滚动到底部,我就可以得到所有的链接。我想要刮掉的一个链接是这一个

现在,我的目标是使用请求解析所有这些链接。我注意到,我想解析的链接是使用这样的B-uPwZsJtnB短代码构建的。

但是,我正在尝试刮掉在该网页的页面源代码中找到的脚本标记中可用的不同的shortcode。页面中有600 shortcodes。我创建的脚本只能解析第一个70,例如shortcode,它最终可以构建70个限定链接。

如何使用请求获取所有600个链接?

到目前为止,我已经尝试过:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import re
import json
import requests

base_link = 'https://www.instagram.com/p/{}/'
lead_url = 'https://www.instagram.com/explore/tags/baltimorepizza/'

with requests.Session() as s:
    s.headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36'
    req = s.get(lead_url)
    script_tag = re.findall(r"window\._sharedData[^{]+(.*?);",req.text)[0]
    for item in json.loads(script_tag)['entry_data']['TagPage']:
        tag_items = item['graphql']['hashtag']['edge_hashtag_to_media']['edges']
        for elem in tag_items:
            profile_link = base_link.format(elem['node']['shortcode'])
            print(profile_link)
EN

回答 3

Stack Overflow用户

发布于 2020-06-02 00:56:44

如果您想用requests来完成它,那么请考虑查询XHR/Ajax请求,以模拟Lazy。见以下图片:

您可以对instagram.com服务器进行类似于通过Python请求刮取JS延迟加载页面 post的查询。

免责声明

由于Instagram施加的一些动态cookie值或其他刮伤预防措施,您可能无法完成该任务。

票数 2
EN

Stack Overflow用户

发布于 2020-05-30 23:28:03

Instagram网页使用延迟加载来加载图像。您可以通过以下两种方法来克服这一问题:

  1. 使用注释中提到的Instagram API
  2. 使用像这样的工具将滚动在页面上的所有图像加载到底部,然后获取链接

第一种方法是比较好的方法。

票数 0
EN

Stack Overflow用户

发布于 2020-06-06 07:30:50

我建议您使用Instagram图API,如果您正在构建一个商业产品,因为使用instagram公开数据是需要同意的,因为GDPR。这个API将简化您的工作,但是在api限制下,您可以在每个用户令牌上查询30次搜索,为期7天。

如果您正在构建非商业工具,您有两种方法。

  1. 直接抓取instagram网页。如前所述,您可以使用selenium并自动进行页面交互,因为网页使用javascript来生成图像urls。这种方法的缺点是instagram和facebook做反刮方法来防止刮取它们的数据,例如用动态生成的类包装html元素,频繁地更改xpath。您可能需要花费大量的时间来编写代码并在稍后修复这些问题。
  2. 使用构建的第三方库来抓取instagram数据。github中有许多开源第三方库,寄生器是我的最爱。您可以使用单一命令下载所有hashtag搜索结果。这个库不仅下载图片,而且还下载与图片相关的帖子的数据json。因为库中有维护人员,所以您不必担心以后instagram网页的更改。在您的情况下,我推荐这种方法。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62022907

复制
相关文章
matlab展示两个向量之间的差异
叶茂林
2023/10/07
2280
matlab展示两个向量之间的差异
request.getSession()几种获取情况之间的差异
HttpSession session = request.getSession();
且陶陶
2023/04/12
1K0
Java获取两个日期之间的日期
/** * 获取两个日期之间的日期 * @param start 开始日期 * @param end 结束日期 * @return 日期集合 */ private List<Date> getBetweenDates(Date start, Date end) { List<Date> result = new ArrayList<Date>(); Calendar tempStart = Calendar.g
水煮麥楽雞
2022/11/20
6.1K0
如何通过PHP打包Git版本库中两个版本之间的差异文件?
PHP作为脚本语言,很多时候我们更新程序都只需要把修改过的文件重新上传覆盖一下就行。
房东的狗丶
2023/02/17
1.9K0
超实用!使用Python快速对比两个Excel表格之间的差异
对于日常办公中需要处理数据的同学来说,有时候需要对比两个Excel表格(或者是数据库)的数据是否完全相同。
活用数据
2022/10/04
4.6K0
超实用!使用Python快速对比两个Excel表格之间的差异
如何用Python获取两个日期之间的日期?
问:如何用Python获取两个日期之间的日期? def date_range(start, end): delta = end - start # as timedelta days = [start + timedelta(days=i) for i in range(delta.days + 1)] return days start_date = datetime(2020, 12, 1) end_date = datetime(2020, 12, 5) print(d
TalkPython
2020/12/11
5.7K0
RabbitMQ与Kafka之间的差异
被概括为“开源分布式消息代理”,用Erlang编写,有助于在复杂的路由方案中有效地传递消息,可以通过服务器上启用的插件进行扩展,高可用(队列可以在集群中的机器上进行镜像)
ruochen
2021/11/25
4K0
进程、会话、连接之间的差异
--======================== -- 进程、会话、连接之间的差异 --========================     在使用Oracle database的时候,连接与会话是我们经常碰到的词语之一。咋一看貌似一回事,事实则不然。一个连接上可以建立零个、 一个、甚至多个会话。啊,咋这样呢?是的,没错。这也是我们经常误解的原因。     各个会话之间是单独的,独立于其他会话,即便是同一个连接的多个会话也是如此。 一、几个术语之间的定义(参照Oracle 9i &10g 编程艺术)         连接(connection):连接是从客户到Oracle 实例的一条物理路径。连接可以在网络上建立,或者通过IPC 机制建立。通常会在     客户进程与一个专用服务器或一个调度器之间建立连接。         会话(session):会话是实例中存在的一个逻辑实体。这就是你的会话状态(session state),也就是表示特定会话的一组内存     中的数据结构.提到"数据库连接"时,大多数人首先想到的就是“会话”。你要在服务器中的会话上执行SQL、提交事务和运行存储过程。 二、通过例子演示来查看之间的关系 1. 无连接,无会话,无进程的情形
Leshami
2018/08/14
2K0
python比较两个list之间的差异、相同(差集、交集、并集)
初始化数据 listA = [‘zhangsan’, ‘lisi’, ‘wangwu’] listB = [‘zhangsan’, ‘lisi’, ‘zhaoliu’] 1、取差集 1.1、listA对应listB的差集 set(listA).difference(set(listB)) —– set([‘wangwu’]) 1.2、listB对应listB的差集
kirin
2021/04/19
6.6K0
VBA:获取指定数值在指定一维数组中的位置
文章背景:在采用VBA抓取数据时,有时需要判断指定数值是否在一维数组中已存在;如果存在,则希望能够获取该数值在数组内的位置。
Exploring
2022/08/10
7.3K0
VBA:获取指定数值在指定一维数组中的位置
git 删除某次指定的提交
删除指定的commit,需要执行变基操作,在多人协作的项目中,不推荐对已推送到远程仓库的内容进行变基操作
Yiiven
2022/12/15
1.5K0
PhpStorm表单提交时获取不到post数据的解决方法
初学php,用echo $_POST["variable"]和var_dump($_POST) 都获取不到post数据。
德顺
2019/11/13
2.1K0
PhpStorm表单提交时获取不到post数据的解决方法
PostgreSQL 和 MySQL 之间的性能差异
在管理数据库时,性能是一项非常重要而又复杂的任务。它可能会受到系统的配置、硬件甚至设计的影响。有趣的是,PostgreSQL和MySQL都配置了兼容性和稳定性,这取决于我们的数据库设计的硬件基础架构。
肉眼品世界
2022/04/19
8.2K0
PostgreSQL 和 MySQL 之间的性能差异
[git] 查看两个分支的差异
当多人开发的时候 如果想知道两个分支有啥差异 git diff 分支1 分支2 --stat -标记的是 左边有,右边没有的 +-标记的是两边有修改的 查看某个文件的差异 git diff 分支1 分支2 文件路径
唯一Chat
2021/09/06
2K0
BerkeleyDB .je 在作为存储时的简单使用
最近在研究BDB时发现速度特别快(非关系型数据库)下面我给大家共享一下我在学习的过程中的一些收获和问题,不知道哪位大神帮忙解决一下。主要在putNoDupData,不知道该怎么使用
用户5166556
2019/04/16
1.4K0
Snap, AppImage和 Flatpak之间差异
早些时候,想要为各种Linux发行版分发应用程序的开发人员在打包方面面临许多挑战。这是因为市场上有许多Linux发行版,并且都使用不同的包管理系统。
从大数据到人工智能
2022/01/18
7.8K0
String与StringBuffer与StringBuilder之间的差异
参考链接: Java stringbuffer和stringbuilder之间的差异
用户7886150
2021/02/26
9230
sed提取两个关键字之间的内容_python提取文本指定内容
如果上述代码是列表页中要获取的部分代码,现在要获取 所有列表页 的tbody标签中每个tr标签下 除第三、四个td标签(这2个中可能有数据,也可能无数据) 外的其他4个td标签中的数据,该如何获取?
全栈程序员站长
2022/10/04
1.7K0
获取git的提交内容
  Qt君最近工作需要发布一款软件,可是遇到了些问题。需要为软件写版本描述,但版本修改内容都在git的每个commit里面,用手动复制显然太浪费时间,不值得。
Qt君
2019/12/27
2.7K0
一些获取 SVN 版本提交记录信息的库
Example 截图 描述 可以读取 SVN 提交记录的库 必须命令行支持 svn命令 可以在终端输入 svn --help查看 可以扩展的功能 可以利用提交文件记录做一款小软件 自动查找要对比
君赏
2018/08/31
1.6K0
一些获取 SVN 版本提交记录信息的库

相似问题

获取两个存储库之间的差异

116

Git -获取两个存储库的分支之间的差异。

38

使用gitpython在两个分支之间获取提交的差异

13

查找两个git存储库之间的差异

42

Git:比较两个存储库之间的差异

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文