【问题标题】:Python: How to Extract Tables from Multipe Links from Same Page under Specific HeadlinePython:如何从特定标题下同一页面的多个链接中提取表格
【发布时间】:2018-05-08 11:55:26
【问题描述】:

通过使用

提供直接链接,我可以从单个页面中提取所有表格(office 365 和 Office 2016 的差异
dfs = pd.read_html(
    "https://support.office.com/en-us/article/what-s-the-difference-between-office-365-and-office-2016-ed447ebf-6060-46f9-9e90-a239bd27eb96?ui=en-US&rs=en-US&ad=US", header=0)

for df in dfs:
    df

如何提取Account and Payement下的所有表格,而无需明确提供account and payement下每个子页面的链接?

所以基本上,它继续 office 365 和 Office 2016 的差异 提取表,然后转到 忘记办公室用户名或密码 并提取表,转到 取消您的订阅并提取表格。 如果没有桌子,它会继续前进。

【问题讨论】:

  • 您的问题是关于如何知道一个 URL 是否会指向一个包含表格的页面?
  • @Victor,您可以编写一个具有 1 个参数(表格 Web 元素)的方法,然后打印它的内容。只需修改我对上一个问题的回答即可。
  • @Victor,我看到只有第一个链接有一个表格。我说的对吗?
  • 请参阅:How do I do X? SO 的期望是,提出问题的用户不仅会进行研究以回答他们自己的问题,还会分享研究、代码尝试和结果。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另见:How to Ask

标签: python pandas selenium-webdriver


【解决方案1】:

这些标题都不包含TABLE 标签,所以我对你在那儿指的是什么感到有点困惑。

如果是我,我会传入字符串作为我要从中提取链接的标题,然后使用下面的 XPath 定位器来获取它们。

//b[.='Account and payment']//ancestor::div[1]//a[@class='ocpArticleLink']

这将获取“帐户和付款”标题,找到 DIV 容器(它包含该标题的所有链接),然后找到所有链接(不包括 MORE 链接)。

这应该可以满足您的要求。您可以将它放在一个函数中,将标题作为参数传递,并让它返回链接的集合。像下面这样...

def get_links(heading)
    return driver.find_elements_by_xpath("//b[.='" + heading + "']//ancestor::div[1]//a[@class='ocpArticleLink']")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 2020-01-25
    • 2023-03-30
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多