2016-04-28 29 views
0

BeautifulSoupにはたくさんのものがありますが、これに答えるものは何も見つかりません...ビットを指定して2ビットのHTML前後のテキストの前後に私は私がしたいページのBeautifulSoupとPythonを使ってWebページから2つのテキスト文字列の間にテキストを抽出します

ビットは、以下のユーザ名である...裏をかくPythonモジュールでこれを行うが、BeautifulSoupにこの時間を使用する必要がありますすることができます:だから

<a class="generic_class" href="/people/username"> 

、私はこすりするbeautifulsoupを指定したいです

'"'

後にこすりと停止するようにビット前

'a class="generic_class" href="/people/'

を探すために、それを伝えることで、ユーザ名

私は、それは(これはすでに動作します)csvファイルからURLのループでこれを行うと、新しいCSV(このビットはおそらく動作しません)へのラインによって結果行を追加します:

for row in url_reader: 
    url = row[0] 
    page = br.open(url).read() 
    soup = BeautifulSoup(br.response().read()) 
    user = soup.findAll('<a class="generic_class" href="/people/') # this is the line where the code that works should go! Obviously this bit does nothing as it doesn't extract what comes after, stopping at the closing quotation mark for the end of the href. 
    page.append.user(output_file) # not sure if this is right?! 

明らかに、理想的な世界では、私はif/elseにif(見つからない "ページが見つかりません")とそれ以外の(上記のことを行う)URLを処理するために、一度にエラー処理を行うと、実際には問題なく動作します!それは今私の優先事項です...

何か助けに感謝します。

答えて

0

「href」属性値を抽出して解析できないのですか?

usernames = [] 

for anchor in soup.findAll('a', {'class': 'generic_class'}): 
    usernames.append(anchor['href'].split('/')[-1]) 

with open('usernames.csv', 'ab') as f: 
    writer = csv.writer(f) 
    for username in usernames: 
     writer.writerow([username]) 

これは単純な例ですが、私は、など

+0

そのユーザ名を取得するループを得ることができます私にAttributeErrorを与えます: 'set'オブジェクトに属性 'items'がありません –

+0

ないどこからそのエラーを取得しなかった、私はそれをテストするためにこれを使用してください: html_doc = ""」 テスト

  • <クラス= "generic_class" HREFを= "/人/ USERNAME1">
""」そのエラーを並べる がから来ていますか? – Evolter

+0

あなたの提案された回答の最初の行はトレースバックに記載されています:(attrの場合は –

0

をいくつかの追加検証を行うことをお勧めしますあなたはhref属性に関数を渡すことができます。

def start_with_people(href): 
    return href and href.startswith('/people/') 

a_tags = soup.find_all('a', class_='generic_class', href=start_with_people) 

これは、すべての<a>のタグを返します。それらは/people/で始まるhrefを持ちます。

あなたはこれらのアンカータグたら:

  1. をあなたは

  2. その上には href

  3. は、それを分割し、

+0

これは私にエラーが表示されます:a_tags = soup.find_all( 'a'、class_ = 'generic_class'、href = start_with_people) TypeError: 'NoneType'オブジェクトは呼び出し可能ではありません –

+0

'soup.findAll'それはエラーではありませんが、何も見つかりません。 –

+0

お持ちのバージョンは? – AKS

関連する問題