2017-10-31 20 views
-1

아래의 html에서 find_all()을 사용하려고합니다. 다른 스레드에 대한 조언을 바탕으로Python Beautiful Soup find_all()

http://www.simon.com/mall

, 나는 아래 사이트를 통해 링크를 실행하고 오류를 찾았지만 표시된 오류가 나는 아름다운 수프에서 할 노력하고 무엇을 아프게 할 수있는 방법을 잘 모르겠습니다 . 여기

https://validator.w3.org/

내 코드입니다;

from requests import get 

url = 'http://www.simon.com/mall' 
response = get(url) 

from bs4 import BeautifulSoup 

html = BeautifulSoup(response.text, 'html5lib') 
mall_list = html.find_all('div', class_ = 'col-xl-4 col-md-6 ') 

print(type(mall_list)) 
print(len(mall_list)) 

결과는 다음과 같습니다.

"C:\Program Files\Anaconda3\python.exe" C:/Users/Chris/PycharmProjects/IT485/src/GetMalls.py 
<class 'bs4.element.ResultSet'> 
0 

Process finished with exit code 0 

나는 HTML에 수백 개의 div가 있다는 것을 알고 있습니다. 나는 왜 어떤 성냥을 얻지 않는가?

+0

을, 나는 싸게 치장() 메소드를 시도, 나는 다른 클래스 이름을 대체 텍스트에 HTML을 캐스팅 시도 문자열, 그리고 다시 HTML로. 또한 부모 div, "js-mall-list 행"을 검색하려고했는데 예상대로 1 일치를 반환합니다 .... –

답변

0

가끔 BeautifulSoup도 사용하십시오. 예를 들어, html = BeautifulSoup.BeautifulSoup(response.text) mall_list = html.html.body.findAll('div',attrs={"class":"col-xl-4 col-md-6 "}) 시도해 볼 수 있습니다! 최고의 소원!

+0

감사하지만 같은 결과가 불행히도 ... –

+0

안녕하세요, 이것이 모두 코드입니다. 시도 해봐. 요청에서 는'얻을 가져 URL = 'http://www.simon.com/mall' 반응 = 수 (URL) 수입 BeautifulSoup로 HTML = BeautifulSoup.BeautifulSoup (response.text) mall_list = HTML .findAll ('option') malls = []for mall_list : .findAll ('div', attrs = { "클래스": "col-lg-4 col-md-6"}) ('값') mall.get 경우 == "" malls.append (mall.text) 인쇄 (쇼핑몰) 인쇄 (유형 (쇼핑몰)) 인쇄 (LEN (쇼핑몰)) 을 '계속 –

0

simon.com/mall 링크를 방문하여 Chrome Dev Tools를 확인하면 코드가 잘 보이지만 'col-xl-4 col-md-6'클래스의 인스턴스가없는 것 같습니다. .

'col-xl-2'로 코드를 테스트 해보면 몇 가지 결과가 나타납니다.

0

스크립트에서 언급 한 해당 페이지에서 다른 제품의 제목과 위치를 구문 분석하려고한다고 가정합니다. 문제는 해당 페이지의 내용이 동적으로 생성되어 요청을 잡을 수 없다는 것입니다. 오히려 셀렌과 같은 브라우저 시뮬레이터를 사용해야합니다. 셀렌은 아래 코드에서 수행 한 작업입니다.

from selenium import webdriver 
from bs4 import BeautifulSoup 
import time 

driver = webdriver.Chrome() 
driver.get('http://www.simon.com/mall') 
time.sleep(3) 

soup = BeautifulSoup(driver.page_source, 'lxml') 
driver.quit() 

for item in soup.find_all(class_="mall-list-item-text"): 
    name = item.find_all(class_='mall-list-item-name')[0].text 
    location = item.find_all(class_='mall-list-item-location')[0].text 
    print(name,location) 

결과 :이 시도주고 내가 다른 파서를 시도

ABQ Uptown Albuquerque, NM 
Albertville Premium Outlets® Albertville, MN 
Allen Premium Outlets® Allen, TX 
Anchorage 5th Avenue Mall Anchorage, AK 
Apple Blossom Mall Winchester, VA