46789


pythonでfor文を回し、bs4でとってきたリンクを出力し、リンクがない場合はFalseを出力するプログラムを作っています。  
下記のコードでは、リンクがある、ないに関わらずFalseが出てしまいます。  
解決策があればご教示お願いいたします。

[code]

    for a_tag in soup.find_all('a'):
                link_pdf = (urljoin(cur_url, a_tag.get('href')))
                #if '/ResultDataSetPDF/' not in link_pdf:
                #link_PDFから文末がpdfと文中にPDFが入っているものを抽出
    
                if (not link_pdf.lower().endswith('.pdf')) and ('/ResultDataSetPDF/' not in link_pdf):
                    continue
                if ('searchhelp' not in link_pdf):
                    print(link_pdf)
                if (''  in link_pdf):
                    print('False')
    
[/code]


CC BY-SA 4.0
2018-07-20T11:46:15.957
46788
2018-07-20T12:40:43.783
29386
question
python python3
if文とfor文を組み合わせた際の挙動


> リンクがない場合はFalseを出力するプログラムを作っています。

上記を、以下のように解釈して良いのであれば、

> bs4でとってきたリンクの集まりに1つもPDFのリンクがない場合に`Flase`を出力する

フラッグを使った以下の方式はいかがでしょうか。

[code]

    # PDFリンク有りフラッグ(リンクの集まり内に1つでもPDFリンクがあるか)
    has_pdf_link = False
    
    # リンクの集まりを1つずつ調査
    for a_tag in soup.find_all('a'):
        link_pdf = (urljoin(cur_url, a_tag.get('href')))
        #link_PDFから文末がpdfと文中にPDFが入っているものを抽出
        if (not link_pdf.lower().endswith('.pdf')) and ('/ResultDataSetPDF/' not in link_pdf):
            continue
        # PDFのリンクの場合、PDFリンク有りフラッグをTrueに
        if ('searchhelp' not in link_pdf):
            has_pdf_link = True
            print(link_pdf)
    
    # リンクの集まりに1つもPDFのリンクがない場合に`Flase`を出力する
    if not has_pdf_link:
        print('False')
    
[/code]


CC BY-SA 4.0
2018-07-20T12:40:43.783
46789
2018-07-20T12:40:43.783
46788
answer