2017-08-07 10 views
0

複数の不動産エージェントのWebサイトをループして、エージェントの名前と携帯電話番号を削ってみようとしています。PythonによるWebスクレイプ - 複数のWebページをループする問題

マイコード:

locations = ['woollahra', 'chinatown', 'bondibeach','doublebay'] 
for location in locations: 
    my_url = 'https://' + location + '.ljhooker.com.au/our-team' 

uClient = uReq(my_url) 
page_html = uClient.read() 
uClient.close() 

page_soup = soup(page_html, "html.parser") 

containers = page_soup.findAll("div", {"class":"team-details"}) 

for container in containers: 
    agent_name = container.findAll("div", {"class":"team-name"}) 
    name = agent_name[0].text 

    phone = container.findAll("span", {"class":"phone"}) 
    mobile = phone[0].text 

    print("name: " + name) 
    print("mobile: " + mobile) 

私は私のスクリプトを実行したときしかし、それは最初の3つのウェブページ(ウラーラ、チャイナタウン、ボンダイビーチ)をスキップし、リストだけ(doublebay)の最後のウェブサイトから情報をこします。なぜこれをやっているのか、すべてのウェブページをどのようにループさせるのかは分かりません。

+0

使用しているモジュールを追加してください、私はあなたがメンタルモデルが欠けていると思う 'import'文 –

+0

を追加してくださいあなたのプログラムが何をしているのか。あなたの頭の各ラインを通ってください。最初のfor-loopは何をしますか?最後に 'my_url'の状態は何ですか? 'my_url'のすべてのインスタンスに対して、以下のコードをどのように繰り返すと思いますか? –

答えて

1

最初のループ内にすべてのコードを入れる必要があります。そうしないと、ループは変数my_urlを変更するだけです。だから、すべてあなたがしなければならないインデントにあなたのコードの残りの部分である:

locations = ['woollahra', 'chinatown', 'bondibeach','doublebay'] 
for location in locations: 
    my_url = 'https://' + location + '.ljhooker.com.au/our-team' 

    uClient = uReq(my_url) 
    page_html = uClient.read() 
    uClient.close() 

    page_soup = soup(page_html, "html.parser") 

    containers = page_soup.findAll("div", {"class":"team-details"}) 

    for container in containers: 
     agent_name = container.findAll("div", {"class":"team-name"}) 
     name = agent_name[0].text 

     phone = container.findAll("span", {"class":"phone"}) 
     mobile = phone[0].text 

     print("name: " + name) 
     print("mobile: " + mobile) 
関連する問題