【问题标题】:How to extract data from a secure website like bloomberg如何从像彭博社这样的安全网站中提取数据
【发布时间】:2019-06-11 06:18:02
【问题描述】:

我正在尝试抓取此网址上的项目:

"https://www.bloomberg.com/news/articles/2019-05-30/tesla-dealt-another-blow-as-barclays-sees-it-as-niche-carmaker"

我只想获取标题和发布日期, 你可以给我的任何示例代码,甚至溅起等等

到目前为止我尝试的是这个

 def parse(self, response):
   yield scrapy.Request('https://www.bloomberg.com/news/articles/2019-05-30/tesla-dealt-another-blow-as-barclays-sees-it-as-niche-carmaker -H x-crawlera-use-https:1',
        headers={'X-Crawlera-Session': create,
        'X-Crawlera-Timeout': 40000,
        'X-Crawlera-Max-Retries': 5,
        'X-Crawlera-Cookies': disable,
        'X-Crawlera-Session': self.session_id
        },
        callback=self.parse_sub,
        )

 def parse_sub(self, response):
    response.xpath("//h1[@class = 'lede-text-v2__hed']").extract_first()
    response.xpath("//meta[@property = 'og:title']/@content").extract_first()
    response.xpath("//time[@class = 'article-timestamp']/@datetime").extract_first()
   print(response.text)

我也在使用 crawlera,但它一直将我检测为机器人

【问题讨论】:

  • 您是否考虑接受仅使用 Selenium 的答案?
  • 是的,我将@DebanjanB
  • 所以您想提取 当巴克莱银行称其为“利基汽车制造商”时,特斯拉再次受到打击2019 年 5 月 30 日下午 5:26 GMT+5: 30 更新于 2019 年 5 月 30 日晚上 7:21 GMT+5:30 两者都... rit?
  • 是的,你是对的@DebanjanB
  • @DebanjanB 我只需要 2019 年 5 月 30 日下午 5:26 GMT+5:30“未更新”谢谢

标签: python selenium scrapy bloomberg scrapy-splash


【解决方案1】:

仅使用 来提取标题,即当巴克莱称其为“利基汽车制造商”时,特斯拉再次受到打击发布日期2019 年 5 月 30 日下午 5:26 GMT+5:30 您必须为 visibility_of_element_located() 诱导 WebDriverWait,您可以使用以下解决方案: p>

  • 代码块

    from selenium import webdriver
    
    driver = webdriver.Firefox(executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe')
    driver.get('https://www.bloomberg.com/news/articles/2019-05-30/tesla-dealt-another-blow-as-barclays-sees-it-as-niche-carmaker')
    print(WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//div[text()='markets']//following:: h1[1]"))).get_attribute("innerHTML"))
    print(WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//div[text()='markets']//following:: h1[1]//following::div[@class='lede-text-v2__times']/time[@itemprop='datePublished']"))).get_attribute("innerHTML"))
    driver.quit() 
    
  • 控制台输出:

    Tesla Dealt Another Blow When Barclays Calls It a ‘Niche Carmaker’
    May 30, 2019, 5:26 PM GMT+5:30
    
  • 注意:您必须添加以下导入:

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

【讨论】:

  • 我正在尝试您的代码,但在未定义“WebDriverWait”时出现错误
  • 嗨@debanjanB 仍然有“错误名称'驱动程序'未定义”我不知道为什么
  • @ChristianRead 查看答案更新并告诉我状态
  • 嗨@debanjanB,我实际上是在scrapy shell上尝试它,我不知道它是否可以在那里工作。我试图将您的代码放入“def parse(self,response):”没有打印响应。如果我不把它放进去,我就会出错。
  • 在尝试处理您的代码后,我现在让它运行,谢谢@debanjanB。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 2021-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多