저는 토런트 사이트에서 영화 이름과 장르를 수집하기 위해 파이썬으로 스크립트를 작성했습니다. BeautifulSoup
은 의사 선택기를 지원하지 않으므로이를 극복 할 기술을 발견했습니다. 내가 지금 직면하고있는 유일한 문제는 아래 스크립트에서 결과를 얻으려면 INVERTED COMMA 내의 텍스트가 정확해야한다는 것입니다. 뭔가 일치하는 부분을 :contains
속성과 비슷한 사용할 수있는 방법이 있기 때문에 심지어 내 쿼리의 텍스트를 부분 구문 단어를 포함하는 경우 여전히 구문 분석 할 것입니다 Genre
후. 여기정확한 선택기 대신 부분 텍스트를 사용하는 방법?
[스크립트에서 Gen
또는 nre:
또는 enr
대신 Genre:
을 사용할 것으로 예상]는 스크립트입니다
import requests
from bs4 import BeautifulSoup
soup = BeautifulSoup(requests.get("https://www.yify-torrent.org/search/1080p/").text,"lxml")
for title in soup.select("div.mv"):
names = title.select("h3 a")[0].text
genre = ' '.join([item.next_sibling for item in title.select(".mdif li b") if item.text=="Genre:"])
print(names, genre)
결과 : 당신은 단순히 여부를 확인하기 위해 in
연산자를 사용할 수
Swelter (2014) 1080p Action
Larry Crowne (2011) 1080p Comedy
Terminal Island (1973) 1080p Action
Heart of Midnight (1988) 1080p Drama
The Lift (1983) 1080p Fantasy
if "Genre:" in item.text
뿐만 아니라if "nre:" in item.text
,if "Gen" in item.text
등 ... 사용할 수 있습니다; 그러나 Scrapy는 의사 요소 등을 지원합니다. https://doc.scrapy.org/en/latest/topics/selectors.html을 참조하십시오. –때로는 위에 사용 된 텍스트가 이와 같이 사용하기에 충분히 길기 때문에 정확한 텍스트를 사용하는 것 이외에 부분 일치를 원했습니다. 나는 scrapy와 lxml도 사용했다. 그러나 나는 그것이 BeautifulSoup에서도 어떻게 사용될 수 있는지 알고 싶었습니다. 감사. – SIM