【发布时间】:2012-07-13 21:10:56
【问题描述】:
所以我有一个数据检索/输入项目,我想提取网页的某个部分并将其存储在文本文件中。我有一个 url 的文本文件,程序应该为每个 url 提取页面的相同部分。
具体来说,该程序会复制 this 等页面上“法律授权:”之后的法律法规。如您所见,仅列出了一项法规。但是,一些 url 也看起来像 this,这意味着有多个单独的法规。
我的代码适用于第一类页面:
from sys import argv
from urllib2 import urlopen
script, urlfile, legalfile = argv
input = open(urlfile, "r")
output = open(legalfile, "w")
def get_legal(page):
# this is where Legal Authority: starts in the code
start_link = page.find('Legal Authority:')
start_legal = page.find('">', start_link+1)
end_link = page.find('<', start_legal+1)
legal = page[start_legal+2: end_link]
return legal
for line in input:
pg = urlopen(line).read()
statute = get_legal(pg)
output.write(get_legal(pg))
在“法律文件”输出 .txt 中给我所需的法规名称。但是,它不能复制多个法规名称。我尝试过这样的事情:
def get_legal(page):
# this is where Legal Authority: starts in the code
end_link = ""
legal = ""
start_link = page.find('Legal Authority:')
while (end_link != '</a> '):
start_legal = page.find('">', start_link+1)
end_link = page.find('<', start_legal+1)
end2 = page.find('</a> ', end_link+1)
legal += page[start_legal+2: end_link]
if
break
return legal
由于每个法规列表都以'</a>&nbsp;' 结尾(检查两个链接中的任何一个的来源),我想我可以使用该事实(将其作为索引的结尾)循环并收集所有法规一弦。有什么想法吗?
【问题讨论】:
-
您正在抓取的页面提供了这些方便的“以 XML 格式下载 RIN 数据”链接。无论 RIN 是什么,都有一些干净的 XML。你不能用那个代替吗? (
<LEGAL_AUTHORITY_LIST><LEGAL_AUTHORITY>blah1</LEGAL_AUTHORITY><LEGAL_AUTHORITY>blah2</LEGAL_AUTHORITY></LEGAL_AUTHORITY_LIST>) -
有了 python 的 ElementTree 库和@tiwo 的建议,解析 XMl 应该很简单
-
刚刚注意到 XML 链接——谢谢。但看起来我需要下载每个 XML 文件,而且我有数百个独特的 RIN 需要通过。是否有用于高效下载 XML 的 Python 代码?
标签: python