2017-12-08 15 views
-1

페이지를 스크랩하고 태그에있는 href 데이터를 가져 오려고하지만 결과를 얻을 수 없습니다. 이것은 내 학교를위한 과제입니다. 누군가이 문제를 해결해 주시겠습니까? 페이지 스크랩 + href를 클릭하고 hrefs 데이터를 가져옴

from bs4 import BeautifulSoup 
import re 
import requests 

for i in range (1,5): 
    base_url = 'https://www.leboncoin.fr/locations' 
    url = 'https://www.leboncoin.fr/locations/1152669519.htm?ca=22_s' 
    res = requests.get(url) 
    soup = BeautifulSoup(res.text) 

    locations = [] 

    links = soup.find_all(['li','a'], href=re.compile('.*\/locations\/+(i)+')) 

    for l in links: 
     full_link = base_url + l['href'] 
     titre = l[['li', 'section', 'h2']].strip() 
     res = requests.get(full_link) 
     soup = BeautifulSoup(res.text) 
     loyer = soup.find(['h2','span'], attrs={"class": "value\^((?![A-Z]).)*$"}) 
     loyers = loyer.text 
     ville = soup.find(['h2','span'], attrs={"class": "value", "itemprop": "adresse"}) 
     villes = ville.text 
     surface = soup.find(['h2','span'], attrs={"class": "clearfix", "calss": "value"}) 
     surfaces = surface.text 
     description = soup.find('p', attrs={"class": "value", "itemprop": "description"}) 
     descriptions = description.text 
     shops.append(titre, loyers, villes, surfaces, descriptions) 

    print(locations) 

는이 같은 결과를 얻었다 : 귀하의 답변에 미리

[] 
[] 
[] 
[] 

감사

내 코드입니다.

+0

코드의 어느 지점에서든지 "locations"에 아무 것도 추가하지 마십시오. 인쇄 할 때 왜 비워두면 안됩니까? –

+0

예 이전에 해결 된 문제를 해결하고 제 경우에 적용했기 때문에이를 수정하는 것을 잊었습니다. [href에서 데이터 스크랩] () (결과는 얻을 수 없습니다.) (https://stackoverflow.com/questions/32845391/scraping-data-from-href) –

+0

그게 내가 말하려고하는 것입니다. 당신이 결코 "위치"에 아무것도 추가하지 않았기 때문에 어떤 결과도 얻지 못합니다. 아무 것도 추가하지 않으면 다른 곳에서 복사 한 코드의 양은 중요하지 않습니다. '위치'는 여전히 비어 있습니다. 그곳에'location '이 무엇을 기대합니까? –

답변

0

어디에도 상점을 정의하지 않았으므로 사전을 원한다고 가정합니다. 따라서 이렇게하십시오 :

for l in links: 
    shops = {} 
    full_link = base_url + l['href'] 
    shops['titre'] = l[['li', 'section', 'h2']].strip() 
    res = requests.get(full_link) 
    soup = BeautifulSoup(res.text) 
    loyer = soup.find(['h2','span'], attrs={"class": "value\^((?![A-Z]).)*$"}) 
    shops['loyers'] = loyer.text 
    ville = soup.find(['h2','span'], attrs={"class": "value", "itemprop": "adresse"}) 
    shops['villes'] = ville.text 
    surface = soup.find(['h2','span'], attrs={"class": "clearfix", "calss": "value"}) 
    shops['surfaces'] = surface.text 
    description = soup.find('p', attrs={"class": "value", "itemprop": "description"}) 
    shops['descriptions'] = description.text 
    locations.append(shops) 

print(locations) 
+0

귀하의 의견을 보내 주셔서 감사합니다. 그러나 코드를 사용해도 동일한 결과를 얻었습니다. 이번에는 단지 하나입니다. [] 문제점에 대해 알고 계십니까? 나는이 소송에서 신참이다. 이것이 이유이다. –

+0

먼저 https://www.leboncoin.fr/locations 대신 https://www.leboncoin.fr/locations/1152669519.htm?ca=22_s 페이지를 찾으려고합니다. –