无法从一些复杂的html元素中提取特定内容

时间:2018-12-06 19:30:56

标签: python python-3.x xpath web-scraping

我写了一个脚本来解析网页中的某些特定内容。内容是静态的,使用请求模块我可以访问它们。问题是我希望抓取的内容在某些html元素中,而这些元素不是常规格式的。

我的脚本可以抓取的是包含Mondays December 26th 2016 Horse Racing Tips的标题,依此类推。每个标题中始终出现单词Mondays和年份2016

现在,我想在不同的 种族提示 下抓取内容,例如Sunshine Coast Race Tips。每个Mondays下都有多个比赛提示。

一个这样的比赛提示:

Sunshine Coast Race Tips:

Race 1: 7, 5, 4, 3 - Winner (1) $1.30 Exacta $1.90 Trifecta $4.10
Race 2: 2, 4, 3, 8 - Winner (1) $3.40 Exacta $62.70 Trifecta $116.10 First 4 $158.80
Race 3: 4, 10, 5, 13 - 2nd and 4th - Loss

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

import requests
from lxml.html import fromstring

url = "https://www.freehorseracingtipsaustralia.com/mondays-horse-racing-results-2016"

res = requests.get(url,headers={"User-Agent":"Mozilla/5.0"})
root = fromstring(res.text)
for item in root.xpath("//b[starts-with(.,'Mondays')]"):
    print(item.text_content())

我该如何实现?

1 个答案:

答案 0 :(得分:2)

尝试以下代码以获取比赛提示

for item in root.xpath('''(//div[b/font[.="Today's Race Tips:"]])[1]/following-sibling::div/b'''):
    print(item.text_content())