使用beautifulsoup抓取Flipkart网页

2024-10-04 01:22:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Flipkart上浏览以下页面:

http://www.flipkart.com/moto-x-play/p/itmeajtqp9sfxgsk?pid=MOBEAJTQRH4CCRYM&ref=L%3A7224647610489585789&srno=p_1&query=moto+x+play&otracker=from-search

我试图找到类为“fk ui ccarousel supercontainer same vreco section reco carousel border top sameHorizontalReco”的div,但它返回空结果。在

from bs4 import BeautifulSoup
import requests

url = "http://www.flipkart.com/moto-x-play/p/itmeajtqp9sfxgsk?pid=MOBEAJTQRH4CCRYM&ref=L%3A7224647610489585789&srno=p_1&query=moto%20x%20play&otracker=from-search"

page = requests.get(url)

soup = BeautifulSoup(page.text)

divs = soup.find_all("div",{"class":"fk-ui-ccarousel-supercontainer same-vreco-section reco-carousel-border-top sameHorizontalReco"})

print divs

divs为空。我使用inspect元素复制了类名。在

我在这个问题中找到了答案。http://www.google.com/url?q=http%3A%2F%2Fstackoverflow.com%2Fquestions%2F22028775%2Ftried-python-beautifulsoup-and-phantom-js-still-cant-scrape-websites&sa=D&sntz=1&usg=AFQjCNFOZIMVyUDcUqNNuv-05Dp7P_L6-g


Tags: fromcomrefhttpurlplaywwwquery
2条回答

requests.get(..)将返回该url上的纯httpget内容。页面包含的所有Javascript rel都不会被下载,而且任何内联Javascript也不会被执行。在

如果flipkart在将DOM加载到浏览器中后使用js修改DOM,那么这些更改将不会反映在page.contents或{}值中。在

您可以尝试使用不同的parser,而不是BeautifulSoup中的默认解析器。我尝试了html5lib,它适用于不同的网站。也许你也会。它将比默认解析器慢,但可能比selenium或其他成熟的无头浏览器更快。在

当您使用requests.get(url)时,在不启用JavaScript的情况下加载url的HTML内容。如果没有启用JavaScript,页面中名为的“查看此产品的客户也查看了”的部分甚至都不会呈现。在

您可以通过在浏览器中关闭JavaScript来探索这种行为。如果你经常刮取,你可能还想下载一个JavaScript切换器插件。在

另一种方法是使用浏览器自动化工具,如selenium。在

相关问题 更多 >