我的HTML:
<table cellspacing="0" cellpadding="2" rules="all" border="1" id="branchTable" width="100%">
<tr class="TitleTable">
<th scope="col" width="250"><b>Branch Name</b></th><th scope="col" width="35%"><b>Branch Date</b></th><th scope="col" width="35%"><b>Branch Origin</b></th>
</tr><tr class="RowSet">
<td><a class="blue" href="javascript: OpenWindow('/home/data/files/fetchRecord.php?fileID=342')">SFO Branch</a></td><td class="red">03/16/2012</td><td class="red"> </td>
</tr><tr class="RowSet">
<td><a class="blue" href="javascript: OpenWindow('/home/data/files/fetchRecord.php?fileID=884')">LAX Branch</a></td><td class="red">03/16/2012</td><td class="red">06/16/1985</td>
</tr><tr class="RowSet">
<td><a class="blue" href="javascript: OpenWindow('/home/data/files/fetchRecord.php?fileID=83')">DC Branch</a></td><td class="red">03/16/2012</td><td class="red"> </td>
</tr>
</table>
我的代码到目前为止:
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(pageSource)
table = soup.find("table", id = "branchTable")
rows = table.findAll("tr", {"class":"RowSet"})
data = [[td.findChildren(text=True) for td in tr.findAll("td")] for tr in rows]
print data
输出:
SFO Branch 03/16/2012
LAX Branch 03/16/2012 06/16/1985
DC Branch 03/16/2012
渴望:
我想获取标签中包含的数据以及ID(fetchRecord.php?fileID = 342 )。不知道如何获取该值。 BeautifulSoup或Regex,请帮忙。谢谢!
答案 0 :(得分:1)
您可以使用正则表达式来解析href
,但我懒得写一个。请参阅下面的href_parse
,了解在检索URI后解析查询字符串的正确方法:
from urlparse import urlparse
from urlparse import parse_qs
def href_parse(value):
if (value.startswith('javascript: OpenWindow('') and
value.endswith('')'):
begin_length = len('javascript: OpenWindow('')
end_length = len('')')
file_location = value[begin_length:-end_length]
query_string = urlparse(file_location).query
query_dict = parse_qs(query_string)
return query_dict.get('fileId', None)
href_data = [[href_parse(td.find('a', attrs={'class': 'blue'})['href'])
for td in tr.findAll("td")]
for tr in rows]
print href_data
答案 1 :(得分:0)
这个怎么样
import re
urlRE = re.compile('javascript: OpenWindow\(\'(.*)#39;\)')
...
urlMat = urlRE.match(value)
if urlMat:
url = urlMat.groups()[0]