使用BeautifulSoup和python抓取Instagram Hashtag页面

时间:2020-02-29 18:58:32

标签: python beautifulsoup

我按照BeautifulSoup教程从网站上抓取了信息,我需要从主题标签研究页面获取instagram帖子的链接,但我没有任何结果,

url_tag = 'https://www.instagram.com/explore/tags/food'
response_url_tag = get(url_tag)

html_soup = BeautifulSoup(response_url_tag.text, 'html.parser')
#print(html_soup.prettify())

for link in html_soup.find_all('a'):
    print(link.get('href'))

HTML DOM 如何抓取所有链接?我需要更改我的代码吗?

1 个答案:

答案 0 :(得分:0)

BeautifulSoup将无法做到这一点。原因是,就像在许多现代Web应用程序中一样,您在浏览器检查器中能够看到的链接不在html代码中,而是在浏览器中使用javascript呈现。 如果您使用tag.js $(document).on("turbolinks:load", function() { var selectizeCallback = null; $(".tag-modal").on("hide.bs.modal", function(e) { if (selectizeCallback != null) { selectizeCallback(); selecitzeCallback = null; } $("#new_tag").trigger("reset"); // $.rails.enableFormElements($("#new_tag")); Rails.enableElement($('#new_tag')[0]); }); $("#new_tag").on("submit", function(e) { e.preventDefault(); $.ajax({ method: "POST", url: $(this).attr("action"), data: $(this).serialize(), success: function(response) { selectizeCallback({value: response.id, text: response.name}); selectizeCallback = null; $(".tag-modal").modal('toggle'); } }); }); $(".selectize").selectize({ maxItems: 5, create: function(input, callback) { selectizeCallback = callback; $(".tag-modal").modal(); $("#tag_name").val(input); } }); }); 网址,则在下载的HTML中将不会获得任何curl标签。

使用instagram解决方案是查询Graphql。对于您的示例,将使用以下URL:<a>

URL中的参数告诉Instagram生成Graphql而不是HTML。然后,您必须使用python进行解析。 Graphene library执行此操作。

或者您可以使用例如Instagram Scraper来为您包装所有内容。