質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

2861閲覧

[Python3 Scraping]`href`の中身を条件としてリンクを取得したい

Yukiya025

総合スコア86

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1グッド

1クリップ

投稿2018/10/14 07:02

編集2018/10/14 07:51

やりたいこと

hrefのリンクを取得するのには成功したのですが、hrefの中身が/projects/python/で始まるリンクに絞り込むにはどうしたら良いでしょうか。

コード

# -*- coding: utf-8 -*- from bs4 import BeautifulSoup import requests import csv import warnings warnings.filterwarnings('ignore') r = requests.get("https://www.freelancer.com/archives/python/2018-40/") soup_content = BeautifulSoup(r.content, "html.parser") f1 = open('r.txt', 'w') f1.write(r.text) f1.close soup = BeautifulSoup(r.text) with open('allhref.csv', 'w+',newline='',encoding='utf-8') as f: writer = csv.writer(f, lineterminator='\n') for link in soup.find_all('a'): writer.writerow([link.get('href')])

get('href')の中身
全てではありませんが、主なもののみ

/info/how-it-works /jobs/ /post-project /projects/python/online-web-tool/ /projects/php/Project-for-Kseniia-17867039/

r.textの中身
全てではありませんが、主なもののみ

<a title="Project for Kseniia I. -- 18/09/30 05:09:30 Job" href="/projects/php/Project-for-Kseniia-17867039/" class="job">Project for Kseniia I. -- 18/09/30 05:09:30</a> <a title="online web tool Job" href="/projects/python/online-web-tool/" class="job">online web tool</a> <a title="Instagram credentials getting Job" href="/projects/php/Instagram-credentials-getting-fix/" class="job">Instagram credentials getting</a>

よろしくお願いしますm(__)m

できましたー(≧∇≦)b

jun68yktさま、ありがとうございます!
おかげさまでできました(^^)

# -*- coding: utf-8 -*- from bs4 import BeautifulSoup import requests import csv import re import warnings warnings.filterwarnings('ignore') r = requests.get("https://www.freelancer.com/archives/python/2018-40/") soup_content = BeautifulSoup(r.content, "html.parser") f1 = open('r.txt', 'w') f1.write(r.text) f1.close soup = BeautifulSoup(r.text) with open('pythonHref.csv', 'w+',newline='',encoding='utf-8') as f: writer = csv.writer(f, lineterminator='\n') for link in soup.find_all('a', {'href': re.compile(r'^/projects/python/')}): writer.writerow([link.get('href')])
yep👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

ご質問に挙げられているソースコードに、以下の2点で追加、修正してみるといかがでしょうか?

(1) 正規表現を使えるように、冒頭に以下を追加

python

1import re

(2) soup.find_all の引数として'a'だけではなく、hrefの条件を以下のように追加

python

1for link in soup.find_all('a', {'href': re.compile(r'^/projects/python/')}):

 
以上、参考になれば幸いです。

投稿2018/10/14 07:31

編集2018/10/14 07:52
jun68ykt

総合スコア9058

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yukiya025

2018/10/14 07:53

[jun68ykt](https://teratail.com/users/jun68ykt)さま、こんにちは\(^o^)/ ありがとうございます! できました! これでpythonの実践課題 (過去のプロジェクトで要求されているソースコードを書く) がはかどります(・∀・) 完成したコードを質問本文に追記しました!
jun68ykt

2018/10/14 07:53

解決されたようですね、よかったです!????
Yukiya025

2018/10/14 08:17

タイトルも合わせて、完全なリンクになるようにhttps://www.freelancer.com/も頭に付け足し、csvファイルに出力できるようにしてGitHubに上げました\(^o^)/ https://github.com/Yukiya025/scrapefreelancer
jun68ykt

2018/10/14 08:25

拝見しまして、★ つけておきました〜
Yukiya025

2018/10/14 08:26

わー(≧∇≦) ありがとうございます<3<3<3
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問