【问题标题】:Python Beautiful Soup only scraping the lower part of the pagePython Beautiful Soup 只抓取页面的下半部分
【发布时间】:2018-07-30 04:51:05
【问题描述】:

我正试图从一个相当大的服装网站页面中提取产品信息,但汤似乎只在任意截断处刮掉了 html 文档的下半部分,所以我感兴趣的数据实际上并不是在我的汤里。我在另一个网站上试过了,效果很好,所以我认为它是特定于网站的。

这是我的代码:

from bs4 import BeautifulSoup
import requests

r = requests.get("https://www.pullandbear.com/rs/man/sale-c1030036006.html")
soup = BeautifulSoup(r.content, "html.parser")
print(soup.prettify())

【问题讨论】:

  • 看起来你想要的可能是由 javascript 呈现的,afaik 不会出现在 BS4 中
  • 使用任意浏览器模拟器抓取动态内容。
  • @novice-coder 试过了。没用。
  • @aws_apprentice 这仍然不能解释为什么我的汤没有整个页面的前半部分。例如,它不包含开始的 html 和 body 标记,但它包含在文档末尾的结束标记。
  • 内容是在 js 事件中加载的,因此 bs4 无法找到元素。尝试使用 selenium 获取整个网页,保存 html 并使用 bs4 做你的事情......

标签: python web-scraping beautifulsoup


【解决方案1】:

正如其中一个 cmets 所述,您尝试获取的 HTML 是通过在浏览器上运行的 JavaScript 添加的。

我向您推荐这个包Requests-HTML 由非常受欢迎的requests 的作者创建。

from requests_html import HTMLSession

session = HTMLSession()
r = session.get('https://www.pullandbear.com/rs/man/sale-c1030036006.html')
r.html.render()

print(r.html.html)

【讨论】:

    猜你喜欢
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-14
    相关资源
    最近更新 更多