2016-05-01 10 views
0

私はすぐに私のWebクローラーにくっついています。今まで コードは次のとおりフレキシブルWebクローラー

import requests 
from bs4 import BeautifulSoup 

def search_spider(max_pages): 
    page = 1 
    while page <= max_pages: 
     url = 'https://www.thenewboston.com/search.php?type=1&sort=pop&page=' + str(page) 
     source_code = requests.get(url) 
     plain_text = source_code.text 
     soup = BeautifulSoup(plain_text, "html.parser") 
     for link in soup.findAll('a', {'class': 'user-name'}): 
      href = "https://www.thenewboston.com/" + link.get('href') 
      print(href) 
search_spider() 

これはYTチュートリアルの例です。誰も私は1,2,3のようなウェブサイトのエンディングを持っていないときにコードを変更する方法を知っていますか?021587、0874519、NI875121のような様々な数字? ankerのウェブサイトドメインは常に同じですが、この例のようにエンディングはまっすぐではありません。だから私が知る必要があるのは、私のコンピュータ(。数百)の.txtファイルか、コピーして私の中に貼り付けるときにリストからウェブサイトの終了番号を得るstr(ページ)の変数を挿入する方法です。コード?リストの終わりに達すると、Pythonは停止するはずです。

私はかなりPythonに知っているので、私はこの問題を現時点で解決する方法を知らない。さらなる情報が必要なら私に知らせてください。あなたの応答を感謝しなさい!

Floの

答えて

0

さて、あなたはあなたが訪問するページのリストではなく、番号の範囲を持っている場合は、あなたが何かを行うことができます:ファイルから読み込むに

pages = ['021587', '0874519', 'NI875121'] 

for page in pages: 
    url = 'http://example.com/some-path/' + str(page) 

を:

with open('filename.txt') as f: 
    contents = f.read() 

あなたのページが空白で区切られていると仮定すると、あなたがして実行することができます

pages = contents.split() 

をチェックアウトdocumentation for str.split()

+0

これは完璧に動作します。ありがとう! もう1つ質問:上記のようにstr(ページ)に.txtドキュメントを参照させることは可能ですか?何百ものウェブサイトのエンディングを自分のコードにコピーするのではなく、自分のウェブサイトの検索範囲を広げたいのなら、それは簡単でしょう。 –

+0

本当に遅く返事を申し訳ありません。あなたはおそらくすでにそれを理解していたでしょうが、私の答えを編集しました。 –

+0

あなたが思ったように私はすでにそれを理解しました。しかし、とにかくあなたの答えを編集してくれてありがとう、他のユーザーのために興味深いかもしれません。 –

関連する問題