与Chrome检查元素不匹配的requests.content


问题内容

我正在使用BeautifulSoup和Requests抓取所有食谱用户数据。

在检查HTML代码时,我发现所需的数据包含在其中

<article class="profile-review-card">

但是,当我使用以下代码时

URL = 'http://allrecipes.com/cook/2010/reviews/'
response = requests.get(URL ).content
soup = BeautifulSoup(response, 'html.parser')
X = soup.find_all('article', class_ = "profile-review-card"  )

当汤和响应充满html时,X为空。我仔细检查了一下,发现用inspect元素看到的内容与request.get(URL).content之间存在一些不一致之处,这是怎么回事?

Chrome浏览器显示的内容


问题答案:

那是因为它是使用Ajax /
javascript加载的。Requests库不能解决这个问题,您需要使用可以执行这些脚本并获取dom的工具。有多种选择,我将列出几个入门。