【问题标题】:python webscraping: You don't have permission to access this resourcepython网页抓取:您无权访问此资源
【发布时间】:2021-05-14 02:14:51
【问题描述】:

我需要以“无头”格式抓取一个网站,因为我不想看到弹出窗口。 如果站点可见,则下面的代码可以工作,但不能像无头一样工作,表明我没有权限:

“拒绝访问

您无权访问“http://www.hoteis.com/ho402825/?”在这台服务器上。

参考#18.563106c9.1620956860.1bad747"

代码是:

    def search():
            link = (
            https://www.infomoney.com.br/
            )

            chrome_options = webdriver.ChromeOptions()
            chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])
            chrome_options.add_argument('--headless')
            driver = webdriver.Chrome('chromedriver', options = chrome_options)
            driver.get(link)
            element = driver.find_element_by_tag_name('body')
            resposta = element.get_attribute('innerHTML') 
            site = BeautifulSoup(resposta, 'html.parser')
            return driver, site

我看到一些问题说要在我的代码上应用“标头”,但由于我使用的是 webdriver,我认为它不起作用。

    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}

【问题讨论】:

  • 仅供参考,它是 scrape(以及 scrapingscraperscraped)而不是废弃。 “废弃”的意思是像垃圾一样扔掉。
  • 请注意,使用此方法抓取某些网站是非法的--在抓取之前始终检查网站的“robots.txt”文件(您可以轻松地将其添加到您的代码中自动化它)也可能该站点正在识别(当您无头运行它时)您的脚本是一个机器人,并且可能因此将其踢出,但我对这个主题知之甚少自信地说。

标签: python selenium headless


【解决方案1】:

知道您尝试抓取的网站是否允许此操作?

在以下位置查找任何网站抓取规则: 任何www.site.com/robots.txt

前:

www.google.com

www.google.com/robots.txt

www.facebook.com

www.facebook.com/robots.txt

robots.txt 帮助:

https://www.infocompile.com/how-to-view-robots-txt-file-of-any-website/

【讨论】:

    【解决方案2】:

    如果您希望在无头模式下抓取整个网页,有很多方法。你调用使用下面的css选择器作为body标签并使用'outerHTML'属性。

    代码:

    options = webdriver.ChromeOptions()
    options.add_argument('start-maximized')
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option('useAutomationExtension', False)
    options.add_experimental_option('excludeSwitches', ['enable-logging'])
    options.add_argument('--headless')
    driver = webdriver.Chrome("C:\\Users\\etc\\Desktop\\Selenium+Python\\chromedriver.exe", options=options)
    wait = WebDriverWait(driver, 30)
    driver.get("https://www.infomoney.com.br/")
    element = driver.find_element_by_css_selector("body[class^='home page-template-default page page-id-']")
    resposta = element.get_attribute('outerHTML')
    print(resposta)
    site = BeautifulSoup(resposta, 'html.parser')
    

    【讨论】:

      猜你喜欢
      • 2020-07-05
      • 1970-01-01
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      • 2021-04-03
      • 2021-08-17
      • 1970-01-01
      • 2021-12-27
      相关资源
      最近更新 更多