在web抓取数据的过程中,我在尝试访问网站上的一些值时遇到问题。问题是我要提取的文本在类中,该类包含由标记分隔的多个文本(这些body标记也包含对我来说也很重要的文本)
因此,首先,我尝试查找带有我需要的文本的标记(在本例中为“Category”),然后从body标记分配下面的文本中提取确切的类别。我可以使用精确的XPath,但这里不是这样,因为我需要在这个侧边栏中搜索的其他页面包含不同数量的行,所以位置以及XPath都是不同的
预期的输出是“实用工具”-侧边栏中的类别
我需要提取的网站和文本如下所示(请查看包含“类别”的侧栏:
元素如下所示:
我试过的代码是:
driver = webdriver.Safari()
driver.get('https://www.statsforsharks.com/entry/MC_Squares')
element = driver.find_elements_by_xpath("//b[contains(text(), 'Category')]/following-sibling")
for value in element:
print(value.text)
driver.close()
指向包含数据的页面的链接是https://www.statsforsharks.com/entry/MC_Squares
谢谢大家!
如果是MediaWiki网站,有更简单的方法。例如,您可以通过带有JSON请求的API访问页面数据,并使用更有限的DOM对其进行解析
你有什么特别的原因想刮我的网站吗
您最好在这里使用regex,因为整个文本都属于“company sidebar body”类,其中只有一些文本位于b标记之间,而有些则不在b标记之间
因此,您可以首先查看该类的文本:
这将为您提供以下信息:
“EOY项目销售额:$1000000\r\n上一年销售额:$200000\r\n类别:公用事业\r\n拍卖交易\r\n金额:10%\r\n金额:$300000\r\n价值:$3000000\r\n股票交易\r\n市场:凯文·奥莱里\r\n股票:25%\r\n金额:$300000\r\n价值:$1200000\r\n地点:-$1800000”
然后,您可以使用正则表达式来定位类别:
c将生成“类别:实用工具”,然后您可以使用它。如果类别(“实用工具”)的值在其他页面上不同,这也会起作用
相关问题 更多 >
编程相关推荐