置き換える必要があったんで試しに作ってみました。
でもこれだと、formのactionだけの場合に取得できないから、jsessionid=.*で正規表現かけて取得しないと。
BeautifulSoup使う必要なくなったじゃないか。
携帯サイトはCookie使えないし、トークン引き継がないとエラーになるサイトとかあるから大変だわ。
でもこれで大抵のサイトはログインしてクローリングできるはず。
後はinputフィールド自動判断したり、javascript解析やらかなぁ。
import re
import BeautifulSoup
html = '<a href="https://www.test.com/accounts/ServiceLogin;jsessionid=1234567?hl=ja&continue=http://www.test.co.jp/" class="gb4">ログイン</a>'
soup = BeautifulSoup(html)
delimiter = ['"',"'",'&','?']
_r = re.compile('jsessionid=.*?[{0}|{1}|{2}|{3}]'.format('"',"'",'&','?'),re.IGNORECASE)
for input_tag in soup.findAll('a'):
_href = dict(input_tag.attrs)['href']
tmp = _r.search('r"{0}"'.format(_href))
_session = str(tmp.group())
print _session.rstrip(''.join(delimiter))
soup = BeautifulSoup(html)
delimiter = ['"',"'",'&','?']
_r = re.compile('jsessionid=.*?[{0}|{1}|{2}|{3}]'.format('"',"'",'&','?'),re.IGNORECASE)
for input_tag in soup.findAll('a'):
_href = dict(input_tag.attrs)['href']
tmp = _r.search('r"{0}"'.format(_href))
_session = str(tmp.group())
print _session.rstrip(''.join(delimiter))