【问题标题】:Not able to scrape Google Adsense无法抓取 Google Adsense
【发布时间】:2015-10-04 17:27:39
【问题描述】:

我正在尝试抓取一个网站并希望从 Google AdSense 获取网址和图片。但似乎我没有得到任何有关 Google Adsense 的详细信息。

我要这里
如果我们在谷歌中搜索“冰箱”,那么我们会在那里得到一些我需要获取的广告。或者一些博客、展示 Google Ads 的网站,例如查看图片

但是当我检查时,我可以找到相关的 div 和 url,但是当我点击 url 时,我只得到静态 html 数据。

这是我需要获取的代码

这是我用 Selenium、Python 编写的脚本。

from contextlib import closing
from selenium.webdriver import Firefox # pip install selenium
import time
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

url = "http://www.compiletimeerror.com/"

# use firefox to get page with javascript generated content
with closing(Firefox()) as browser:
    browser.get(url) # load page
    delay = 10 # seconds
try:
    WebDriverWait(browser, delay).until(EC.presence_of_element_located(browser.find_element_by_xpath("(//div[@class='pla-unit'])[0]")))
    print "Page is ready!"
    Element=browser.find_element(By.ID,value="google_image_div")
    print Element
    print Element.text
except TimeoutException:
    print "Loading took too much time!"

但我仍然无法获取数据。请给我任何参考或提示。

【问题讨论】:

  • 我在 HTML 中看到 iframe,但我没有看到您在代码中切换到它。
  • @Sandip Armal Patil 你还在寻找答案吗?

标签: python selenium-webdriver web-scraping google-ads-api


【解决方案1】:

您需要首先选择包含您要使用的元素的框架。

select_frame("id=google_ads_frame1");

注意:我不确定 python 语法。不过应该和这个差不多。

【讨论】:

    【解决方案2】:

    在选择 element 变量(未经测试)之前,使用 Selenium 的 switch_to.frame 方法将 browser 指向 html 中的 iframe

    from contextlib import closing
    from selenium.webdriver import Firefox # pip install selenium
    import time
    from selenium.common.exceptions import TimeoutException
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    url = "http://www.compiletimeerror.com/"
    
    # use firefox to get page with javascript generated content
    with closing(Firefox()) as browser:
        browser.get(url) # load page
        delay = 10 # seconds
    try:
        WebDriverWait(browser, delay).until(EC.presence_of_element_located(browser.find_element_by_xpath("(//div[@class='pla-unit'])[0]")))
        print "Page is ready!"
        browser.switch_to.frame(browser.find_element_by_id('google_ads_frame1'))
        element=browser.find_element(By.ID,value="google_image_div")
        print element
        print element.text
    except TimeoutException:
        print "Loading took too much time!"
    

    http://elementalselenium.com/tips/3-work-with-frames

    关于 Python style 最佳实践的说明:在声明局部变量(元素与元素)时使用小写。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-05
      相关资源
      最近更新 更多