【问题标题】:How to show the hidden contents under "View More" when using Selenium - Python使用 Selenium - Python 时如何在“查看更多”下显示隐藏的内容
【发布时间】:2019-07-07 15:28:24
【问题描述】:
driver = webdriver.Chrome(r'XXXX\chromedriver.exe')
FB_bloomberg_URL = 'https://www.bloomberg.com/quote/FB:US'
driver.get(FB_bloomberg_URL)

board_members = driver.find_elements_by_xpath('//* [@id="root"]/div/div/section[3]/div[10]/div[1]/div[2]/div/div[2]')[0]
board=board_members.text
board.split('\n')

我编写上面的代码是为了抓取来自 Bloomberg 的 Facebook 版面信息。但是我很难提取所有董事会成员,因为其他人隐藏在“查看更多”后面。如何提取所有名称?

感谢您的帮助。

【问题讨论】:

  • 你可以扩展视图,如果它来了,提取更多的内容

标签: python-3.x selenium web-scraping selenium-chromedriver


【解决方案1】:

您可以使用 requests 完成所有操作,并从之前的 GET 获取适当的 cookie 以传递给 API。单击view more 链接并检查网络流量时,可以在网络选项卡中找到该 API。


import requests

headers = {
    'dnt': '1',
    'accept-encoding': 'gzip, deflate, br',
    'accept-language': 'en-US,en;q=0.9',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36',
    'accept': '*/*',
    'referer': 'https://www.bloomberg.com/quote/FB:US',
    'authority': 'www.bloomberg.com',
    'cookie':''
}

with requests.Session() as s:
    r = s.get('https://www.bloomberg.com/quote/FB:US')
    headers['cookie'] = s.cookies.get_dict()['_pxhd']
    r = s.get('https://www.bloomberg.com/markets2/api/peopleForCompany/11092218', headers = headers).json()
    board_members = [item['name'] for item in r['boardMembers']]
    print(board_members)

【讨论】:

  • 感谢您的回复。我应用了代码,但收到错误消息:“NameError: name 's' is not defined”。那个“s”是什么?
  • 您好,是因为我将代码更改为原始代码。
  • 嗨,QHarr,我找不到“bloomberg.com/markets2/api/peopleForCompany/11092218”。我怎样才能找到这个链接?
  • 加载原始网址。然后按 F12 打开开发工具 > 转到网络选项卡 > 按 F5 刷新页面 > 过滤 XHR 流量 > 在网络流量上使用 Ctrl + F 拉出搜索框并搜索 /api/ 或页面上存在的值
  • 酷!我错过了点击查看更多。再次感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-17
  • 2019-11-18
  • 2016-03-29
  • 1970-01-01
  • 2020-04-14
  • 2017-05-01
相关资源
最近更新 更多