2016-09-19 20 views
0

私はYouTubeのpythonチュートリアルに従っていて、基本的なWebクローラーを作成する場所まで行ってきました。私は非常に簡単な仕事をするために自分自身を作ってみました。 craigslistの私の都市の車のセクションに移動し、すべてのエントリのタイトル/リンクを印刷し、次のページにジャンプし、必要に応じて繰り返します。最初のページでは動作しますが、ページを変更してデータを取得し続けることはありません。誰かが間違ったことを説明するのを助けることができますシンプルなPythonのWebクローラー

import requests 
from bs4 import BeautifulSoup 

def widow(max_pages): 
    page = 0 # craigslist starts at page 0 
    while page <= max_pages: 
     url = 'http://orlando.craigslist.org/search/cto?s=' + str(page) # craigslist search url + current page number 
     source_code = requests.get(url) 
     plain_text = source_code.text 
     soup = BeautifulSoup(plain_text, 'lxml') # my computer yelled at me if 'lxml' wasn't included. your mileage may vary 
     for link in soup.findAll('a', {'class':'hdrlnk'}): 
      href = 'http://orlando.craigslist.org' + link.get('href') # href = /cto/'number'.html 
      title = link.string 
      print(title) 
      print(href) 
      page += 100 # craigslist pages go 0, 100, 200, etc 

widow(0) # 0 gets the first page, replace with multiples of 100 for extra pages 

答えて

2

はあなたのインデントの問題を持っているように、あなたはブロックとするループの内側ないながらメインで page += 100を行う必要があります見えます。

def widow(max_pages): 
    page = 0 # craigslist starts at page 0 
    while page <= max_pages: 
     url = 'http://orlando.craigslist.org/search/cto?s=' + str(page) # craigslist search url + current page number 
     source_code = requests.get(url) 
     plain_text = source_code.text 
     soup = BeautifulSoup(plain_text, 'lxml') # my computer yelled at me if 'lxml' wasn't included. your mileage may vary 
     for link in soup.findAll('a', {'class':'hdrlnk'}): 
      href = 'http://orlando.craigslist.org' + link.get('href') # href = /cto/'number'.html 
      title = link.string 
      print(title) 
      print(href) 
     page += 100 # craigslist pages go 0, 100, 200, etc 
+0

ホラー・クラップ・ワウ今私はとても愚かな気がする。ありがとうございました。 – v0dkuh

+1

これはソリューションの一部にすぎませんか? 'page'はインクリメントされていますが、この例では' max_pages'は '0'に設定されています。最初のページの後に、 '100 <= 0'はFalseを返し、ループを終了します。 –

+0

OPのコメントからは、最初のページを取得するためにウィンドウ(0)が呼び出されます。彼がwindow(1000)を呼び出すと、彼はpage <= 1000 – sisanared

関連する問題