我试图在Flipkart上浏览以下页面:
我试图找到类为“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元素复制了类名。在
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
。在相关问题 更多 >
编程相关推荐