如何从完整HTML文本中的<a>标签提取URL GET参数

6 投票
6 回答
6562 浏览
提问于 2025-04-16 02:54

我有一个HTML页面,里面有很多不同的标签,大部分的标签在它们的href属性里都有一个叫做sessionid的GET参数。比如:

...
<a href="struct_view_distrib.asp?sessionid=11692390">
...
<a href="SHOW_PARENT.asp?sessionid=11692390">
...
<a href="nakl_view.asp?sessionid=11692390">
...
<a href="move_sum_to_7300001.asp?sessionid=11692390&mode_id=0">
...

你可以看到,sessionid的值是一样的,我只需要把这个值提取到一个变量里,不管是从哪个标签里提取:x=11692390。我对正则表达式还不太熟悉,但在网上找的资料没什么帮助。非常感谢!

6 个回答

2

我会这样做——在我被告知这是个Python的问题之前;)

<script>
function parseQString(loc) {
  var qs = new Array();
  loc = (loc == null) ? location.search.substring(1):loc.split('?')[1];
  if (loc) {
    var parms = loc.split('&');
    for (var i=0;i<parms.length;i++) {
      nameValue = parms[i].split('=');
      qs[nameValue[0]]=(nameValue.length == 2)? unescape(nameValue[1].replace(/\+/g,' ')):null; // use null or ""
    }
  }
  return qs;
}
var ids = []; // will hold the IDs
window.onload=function() {
  var links = document.links;
  var id;
  for (var i=0, n=links.length;i<n;i++) {
    ids[i] = parseQString(links[i].href)["sessionid"];
  }
  alert(ids); // remove this when happy
  // here you can do 
  alert(ids[3]); 
  //to get the 4th link's sessionid
}


</script>

<a href="struct_view_distrib.asp?sessionid=11692390">
...</a>
<a href="SHOW_PARENT.asp?sessionid=11692390">
...</a>
<a href="nakl_view.asp?sessionid=11692390">
...</a>
<a href="move_sum_to_7300001.asp?sessionid=11692390&mode_id=0">
...</a>
5

用一个能解析HTML的库来处理你的HTML代码,然后使用 getElementsByTagName('a') 来找到所有的链接。接着,逐个查看这些链接,使用 getAttribute('href') 来获取每个链接的地址,并提取出这个地址中的字符串。之后,你可以用正则表达式或者用 ? 来分割字符串,从中找到会话ID。

11

这段代码没有使用正则表达式,不过无论如何,这就是你在Python 2.6中该怎么做:

from BeautifulSoup import BeautifulSoup
import urlparse

soup = BeautifulSoup(html)
links = soup.findAll('a', href=True)

for link in links:
  href = link['href']
  url = urlparse.urlparse(href)
  params = urlparse.parse_qs(url.query)
  if 'sessionid' in params:
    print params['sessionid'][0]

撰写回答