【发布时间】:2015-07-10 05:41:36
【问题描述】:
试图爬取谷歌搜索结果。这段代码适用于所有其他网站,我已经尝试过,但不适用于谷歌。它返回一个空列表。
from BeautifulSoup import BeautifulSoup
import requests
def googlecrawler(search_term):
url="https://www.google.co.in/?gfe_rd=cr&ei=UVSeVZazLozC8gfU3oD4DQ&gws_rd=ssl#q="+search_term
junk_code=requests.get(url)
ok_code=junk_code.text
good_code=BeautifulSoup(ok_code)
best_code=good_code.findAll('h3',{'class':'r'})
print best_code
googlecrawler("healthkart")
它应该返回类似这样的东西。
<h3 class="r"><a href="/url? sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&uact=8&ved=0CEIQFjAF&url=http%3A%2F%2Fwww.coupondunia.in%2Fhealthkart&ei=qFmfVc2fFNO0uASti4PwDQ&usg=AFQjCNFHMzqn-rH4Hp-fZK0E4wwxJmevEg&sig2=QgwxMBdbPndyQTSH10dV2Q" onmousedown="return rwt(this,'','','','6','AFQjCNFHMzqn-rH4Hp-fZK0E4wwxJmevEg','QgwxMBdbPndyQTSH10dV2Q','0CEIQFjAF','','',event)" data-href="http://www.coupondunia.in/healthkart">HealthKart Coupons: July 2015 Coupon Codes</a></h3>
【问题讨论】:
-
抓取 Google 违反了他们的服务条款,他们保留设置技术障碍来执行这些条款的权利。因此,随着执行它的障碍得到改善,我们给您的任何答案都可能在相当短的时间内中断。如果您想以编程方式搜索 Google,请通过支持的 API 注册一个密钥。
-
哦,好吧..只是为了好玩..明白..谢谢:)
-
@TusharBakaya 如果您使用 Chrome 或 Firefox 查看页面源代码,您应该会看到它实际上是作为 Javascript 返回的,然后组装到 HTML 客户端。我的猜测是您正在检查元素,这将向您显示 post-JS 结果。
BeautifulSoup只是抓取原始的基于 JS 的源码。 -
这完全有道理。知道该怎么做吗?
标签: python beautifulsoup web-crawler google-crawlers