我创建了一个脚本,该脚本能够从网页中提取在类.html
下可用的tableFile
扩展名结尾的链接。该脚本可以完成任务。但是,我目前的目的是仅获取在类型字段中具有.html
的{{1}}链接。我正在寻找任何纯xpath解决方案(不使用EX-
或其他方式)。
到目前为止我尝试过的脚本:
.getparent()
当我尝试使用以下方法使满足以上条件的链接时,出现错误:
import requests
from lxml.html import fromstring
res = requests.get("https://www.sec.gov/Archives/edgar/data/1085596/000146970918000185/0001469709-18-000185-index.htm")
root = fromstring(res.text)
for item in root.xpath('//table[contains(@summary,"Document")]//td[@scope="row"]/a/@href'):
if ".htm" in item:
print(item)
我得到的错误:
for item in root.xpath('//table[contains(@summary,"Document")]//td[@scope="row"]/a/@href'):
if ".htm" in item and "EX" in item.xpath("..//following-sibling::td/text"):
print(item)
这是文件的外观:
答案 0 :(得分:2)
如果您需要纯XPath解决方案,则可以在下面使用:
<input type="radio" class='rd'name="all" value="op1" checked="">All
<input type="radio" name="selected" class='rd' value="op2"> Selected
<input type="checkbox" name="item" >Item description
答案 1 :(得分:1)
这是一种使用数据框和熊猫的方法
import pandas as pd
tables = pd.read_html("https://www.sec.gov/Archives/edgar/data/1085596/000146970918000185/0001469709-18-000185-index.htm")
base = "https://www.sec.gov/Archives/edgar/data/1085596/000146970918000185/"
results = [base + row[1][2] for row in tables[0].iterrows() if row[1][2].endswith(('.htm', '.txt')) and str(row[1][3]).startswith('EX')]
print(results)
答案 2 :(得分:1)
看起来像你想要的
//td[following-sibling::td[starts-with(text(), "EX")]]/a[contains(@href, ".htm")]
使用xpath可以有很多不同的方法。 CSS更加简单。