我正在尝试获得连接到这个网页中的每个图像的所有链接。
如果让selenium脚本向下滚动到底部,我就可以得到所有的链接。我想要刮掉的一个链接是这一个。
现在,我的目标是使用请求解析所有这些链接。我注意到,我想解析的链接是使用这样的B-uPwZsJtnB
短代码构建的。
但是,我正在尝试刮掉在该网页的页面源代码中找到的脚本标记中可用的不同的shortcode
。页面中有600 shortcodes
。我创建的脚本只能解析第一个70
,例如shortcode
,它最终可以构建70个限定链接。
如何使用请求获取所有600个链接?
到目前为止,我已经尝试过:
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)
发布于 2020-06-02 00:56:44
如果您想用requests
来完成它,那么请考虑查询XHR/Ajax请求,以模拟Lazy。见以下图片:
您可以对instagram.com服务器进行类似于通过Python请求刮取JS延迟加载页面 post的查询。
免责声明
由于Instagram施加的一些动态cookie值或其他刮伤预防措施,您可能无法完成该任务。
发布于 2020-05-30 23:28:03
Instagram网页使用延迟加载来加载图像。您可以通过以下两种方法来克服这一问题:
第一种方法是比较好的方法。
发布于 2020-06-06 07:30:50
我建议您使用Instagram图API,如果您正在构建一个商业产品,因为使用instagram公开数据是需要同意的,因为GDPR。这个API将简化您的工作,但是在api限制下,您可以在每个用户令牌上查询30次搜索,为期7天。
如果您正在构建非商业工具,您有两种方法。
https://stackoverflow.com/questions/62022907
复制相似问题