您要查找的所有信息都在 <script type=text/javacript> 中
您可以使用以下正则表达式获取它:
from bs4 import BeautifulSoup as soup
import requests
import json
import re
def _get_json_footer(html):
s = str(html)
r = re.compile('"entry_data":(.*?),"gatekeepers"')
m = r.search(s)
if m:
result = m.group(1)
return json.loads(result)
url = 'https://www.instagram.com/explore/tags/SOMEHASHTAGHERE/'
page = requests.get(url)
html = soup(page.text, 'html.parser')
json_footer = _get_json_footer(html)
tagpage = json_footer.get('TagPage')
然后您可以在 tagpage 字典中导航以获取您的数据
编辑:
要获取帖子链接,您只需在 tagpage 字典中导航:
from bs4 import BeautifulSoup as soup
import requests
import json
import re
def _get_json_footer(html):
s = str(html)
r = re.compile('"entry_data":(.*?),"gatekeepers"')
m = r.search(s)
if m:
result = m.group(1)
return json.loads(result)
url = 'https://www.instagram.com/explore/tags/SOMEHASHTAGHERE/'
page = requests.get(url)
html = soup(page.text, 'html.parser')
json_footer = _get_json_footer(html)
tagpage = json_footer.get('TagPage')
links = []
edges = tagpage[0].get('graphql',{}).get('hashtag',{}).get('edge_hashtag_to_media',{}).get('edges',[])
for e in edges:
links.append("https://www.instagram.com/p/"+e.get('node',{}).get('shortcode','')+'/')
print(links)
输出:
['https://www.instagram.com/p/Bsh4UcdBRvY/', 'https://www.instagram.com/p/Bq8vAMRHtGB/', 'https://www.instagram.com/p/Bn_vfeWhcYL/', 'https://www.instagram.com/p/Bm1QRb2ntWL/', 'https://www.instagram.com/p/Bj5pLHAnVuY/', 'https://www.instagram.com/p/Bfn2QWiHKK5/', 'https://www.instagram.com/p/BfC4ZnTntq0/', 'https://www.instagram.com/p/BeomaB6Hb8-/', 'https://www.instagram.com/p/vYszwjyLdB/', 'https://www.instagram.com/p/sQI6Jfpi3f/', 'https://www.instagram.com/p/sO9oXPMr6K/', 'https://www.instagram.com/p/qzvHuCHUgH/', 'https://www.instagram.com/p/WdlKcCBW3w/']
您可以将键 edge_hashtag_to_media 更改为 edge_hashtag_to_top_posts 以获取其他值