46779


現在、BeautifulSoupｗ用いてスクライブを行っています。  
あるサイトではHTMLでのリンクとPDFでのリンクが同ページにあるのですが、PDFのリンクだけを取得したいです。  
下記のコードだとPDF,HTMLのリンクが混じったものがprintで出てきてしまいます。  
htmlのリンクを除外する方法をお教示お願いできればと思い質問させていただきました。

[code]

    for a_tag in soup.find_all('a'):
        link_pdf = (urljoin(cur_url, a_tag.get('href')))
        #行の始めがjavaを除外
        if link_pdf.startswith('javascript'):
            continue
        #行の終わりがpdf、/を除外
        if link_pdf.endswith('pdf'):
            continue
        if link_pdf.endswith('/'):
            continue
        #行内にpdfがあるか
        #if link_pdf.find('pdf'):
            #continue
        print(link_pdf)
    
[/code]


CC BY-SA 4.0
2018-07-20T07:38:18.907
46775
2018-07-20T08:35:59.197
2018-07-20T07:48:47.857
29386
29386
question
python python3 beautifulsoup
BeautifulSoupでのリンクの選出


> PDFのリンクだけを取得したいです。

PDFのURLが必ず`"/ResultDataSetPDF/"`を含むのであれば、  
以下のように含まないものを除外すれば良いと思います。  
(URLの拡張子も確認するように修正しました。)

[code]

    for a_tag in soup.find_all('a'):
        link = (urljoin(cur_url, a_tag.get('href')))
    
        # pdfの拡張を持たず、かつ、linkにPDFディレクトリの指定がなければ除外
        if (not link.lower().endswith(".pdf")) and ("/ResultDataSetPDF/" not in link):
            continue
    
        print(link)
    
[/code]


CC BY-SA 4.0
2018-07-20T08:04:56.180
46779
2018-07-20T08:35:59.197
2018-07-20T08:35:59.197
46775
answer