def fetch_post(self, board, pid, num): params = {'board': board, 'file': pid2str(pid), 'num': num} html = self._do_action('bbscon', params) soup = BeautifulSoup(html) txt = soup.find('textarea').text ret = Post(board, pid, num) ret.parse_post(txt) # TODO: works for 'x' post s = soup.findAll('a')[-1]['href'] gid = parse_qs(urlparse(s).query).get('gid', None) if gid is not None: ret.gid = gid[0] else: ret.gid = None return ret
def fetch_topic(self, board, pid, start=None): params = {'board': board, 'file': pid2str(pid)} if start: params['start'] = start html = self._do_action('bbstcon', params) soup = BeautifulSoup(html) ret = Topic(board, pid) items = soup.findAll('table', {'class': 'main'}) if not items: raise ContentError() for i in items: c = i.tr.td.a['href'] p = Post(board, parse_pid(c), parse_num(c)) c = i.findAll('tr')[1].td.textarea.text p.parse_post(c) ret.post_list.append(p) for i in soup.body.center.findAll('a', recursive=False, limit=3): if i.text == u'本主题下30篇': ret.next_start = int(parse_href(i['href'], 'start')) return ret