2017-12-08 22 views
-1

私はページをスクラップし、タグ内のhrefsデータを取得しようとしていますが、結果を得ることができません。これは私の学校の課題です。 誰かが私にこの問題を解決してもらえますか?ページをスクラップし、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

これは私が言うことですが、あなたは何も決して「場所」に何も追加しないので、何の結果も得られません。何も追加しない場合、他の場所からコピーするコードの量は関係ありません。「場所」はまだ空です。 「場所」には何があると思いますか? –

答えて

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 –

関連する問題