使用beautifulsoup刮痧Flipkart网页

时间:2016-01-12 10:38:24

标签: python beautifulsoup

我正试图在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

我试图找到与班级相关的div" fk-ui-ccarousel-supercontainer same-vreco-section reco-carousel-border-top sameHorizo​​ntalReco"但它返回空结果。

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

div是空的。我使用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

2 个答案:

答案 0 :(得分:2)

使用requests.get(url)时,您需要加载url 的HTML内容,而不启用 JavaScript。如果没有启用JavaScript,那么查看此产品的“”客户的页面部分也会被视为“”,甚至都不会呈现。

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

您可能需要考虑的另一种方法是使用浏览器自动化工具,例如selenium

答案 1 :(得分:0)

requests.get(..)将返回该网址上的纯HTTP GET内容。不会下载所有页面包含的Javascript rels,也不会执行任何内联javascript。

如果在浏览器中加载DOM后,flipkart使用js修改DOM,则这些更改不会反映在page.contentspage.text值中。

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