2017-04-17 1 views
0

주어진 키워드 집합과 설정된 가격과 일치하는 모든 Ebay 항목 URL의 목록을 생성하려는 프로젝트에서 작업하고 있습니다. 지금까지 필자는 EBay가 사용자의 입력 키워드와 가격을 사용하고 그 페이지에서 include/itm /의 URL 만 반환하도록 요구하는 형식의 URL을 항목 URL로 반환하여 URL을 작성함으로써 작동하도록했습니다. . 그러나 키워드가 너무 구체화되면 문제가 발생합니다. Ebay가 특정 검색에 대해 10 개 미만의 검색 결과를 표시하면 일부 키워드와 일치하는 '관련 제품'에 대한 링크도 제공합니다. 이 관련 제품에 대한 링크를 반환하고 싶지 않습니다. 필자는 입력 된 사용자 키워드를 목록으로 분할 한 다음 URL에이 목록의 모든 요소가 포함되어 있어야하지만 작동하지 않는 If 문을 넣음으로써 이것을 고려하려고 시도했으며이 오류 메시지가 나타납니다. : TypeError : 'in'은 bool이 아니라 왼쪽 피연산자로 문자열을 필요로합니다.URL에 Python의 목록에있는 모든 요소가 포함되어 있는지 확인

아래 코드를 참조하십시오. 어떤 도움을 주시면 감사하겠습니다!

import requests 
from bs4 import BeautifulSoup 
import cherrypy 

user_keyword = input("What would you like to search for? ") 

print(user_keyword) 


keywords_url = user_keyword.replace(' ', '%20') 


user_price = input("What is your maximum price? ") 

url_part1 = 'http://www.ebay.com/sch/i.html?_from=R40&_sacat=0&_nkw=' 
url_part2 = '&_dcat=55793&rt=nc&_mPrRngCbx=1&_udlo&_udhi=' 

url = (url_part1 + keywords_url + url_part2 + user_price) 


r= requests.get(url) 

data = r.text 

soup = BeautifulSoup(data, "html.parser") 

for link in soup.find_all('a'): 
    if link.has_attr('href'): 
     if '/itm/' in link['href']: #Makes sure we only get actual item links 
      if all(user_keyword.split(' ')) in link['href']: 
       print(link['href']) 

답변

0

파이썬 키워드 all은 기본적이며 : 목록을 보내고 (또는 유사) 논리 값의. 따라서, 먼저 개별적으로 user_keyword 각 단어에 대한 테스트해야하고 최종 결과에 all를 사용

if all(word in link['href'] for word in user_keyword.split(' ')):

이 코드 조각이 있기 때문에, 목록 (또는 오히려 발전기를 생성하는 지능형리스트를 사용 부울 값의 목록 표식 없음 []). 링크에 모든 사용자 키워드가 포함되어있는 경우 모든 값은 True입니다.

관련 문제