2017-01-14 1 views
3

ため掻き取り、これまで私が持っている:、hrefのリンクを正しいキーワードを使用してこのページ上の特定のリンクを収集しようとすると

from bs4 import BeautifulSoup 
import random 
url = 'http://www.thenextdoor.fr/en/4_adidas-originals' 
r = requests.get(url) 
soup = BeautifulSoup(r.text, 'lxml') 
raw = soup.findAll('a', {'class':'add_to_compare'}) 
links = raw['href'] 
keyword1 = 'adidas' 
keyword2 = 'thenextdoor' 
keyword3 = 'uncaged' 
for link in links: 
    text = link.text 
    if keyword1 in text and keyword2 in text and keyword3 in text: 

イムあなたはすべてを持つ存在しているかどうかを確認することができますthis link

答えて

3

を抽出しようとしています

all()とのいずれかの場合1が any()

from bs4 import BeautifulSoup 
import requests 

res = requests.get("http://www.thenextdoor.fr/en/4_adidas-originals").content 
soup = BeautifulSoup(res) 

atags = soup.find_all('a', {'class':'add_to_compare'}) 
links = [atag['href'] for atag in atags] 
keywords = ['adidas', 'thenextdoor', 'Uncaged'] 

for link in links: 
    if all(keyword in link for keyword in keywords): 
     print link 

出力を持つ存在であります

http://www.thenextdoor.fr/en/clothing/2042-adidas-originals-Ultraboost-Uncaged-2303002052017.html 
http://www.thenextdoor.fr/en/clothing/2042-adidas-originals-Ultraboost-Uncaged-2303002052017.html 
1

それとも、あなたが行うことができ、それfind_all()ためhref属性値としてa functionを使用して1行く中:

keywords = ['adidas', 'thenextdoor', 'Uncaged'] 
links = soup.find_all('a', 
         class_='add_to_compare', 
         href=lambda href: all(keyword in href for keyword in keywords)) 
for link in links: 
    print(link["href"]) 
関連する問題