1

複数行のYouTubeユーザー名を含む.txtファイルを取得し、それをYouTubeユーザーホームページのURLに追加し、クロールしてプロファイルデータを取得するスクリプトを作成しようとしています。

以下のコードは、1人のユーザーに必要な情報を提供しますが、複数のURLのインポートと反復をどこから開始すればよいかわかりません。

#!/usr/bin/env python
# -- coding: utf-8 --
from bs4 import BeautifulSoup
import re
import urllib2

# download the page
response = urllib2.urlopen("http://youtube.com/user/alxlvt")
html = response.read()

# create a beautiful soup object
soup = BeautifulSoup(html)

# find the profile info & display it
profileinfo = soup.findAll("div", { "class" : "user-profile-item" })
for info in profileinfo:
    print info.get_text()

誰か推奨事項はありますか?

たとえば、次のような.txtファイルがある場合:

username1
username2
username3
etc.

それらを繰り返し処理し、 http: //youtube.com/user/%sに追加し、すべての情報を取得するためのループを作成するにはどうすればよいですか?

4

2 に答える 2

2

実際のスクレイピングモジュール(scrapy、mechanize、seleniumなど)を使用したくない場合は、書いたものを繰り返し続けることができます。

  1. ファイルオブジェクトの反復を使用して行ごとに読み取るファイルオブジェクトに関するいくつかの良い事実は、ファイルオブジェクトが「rb」で開かれている場合、実際にはイテレータとしてreadline()を呼び出すため、次のことを実行できますfor line in file_obj。ドキュメント内を1行ずつ移動します。
  2. 以下で使用した連結URL+ですが、連結関数を使用することもできます。
  3. URLのリストを作成します-リクエストをずらすことができるので、思いやりのある画面スクレイピングを行うことができます。

    # Goal: make a list of urls
    url_list = []
    
    # use a try-finally to make sure you close your file.
    try:
        f = open('pathtofile.txt','rb')
        for line in f:
            url_list.append('http://youtube.com/user/%s' % line)
        # do something with url list (like call a scraper, or use urllib2
    finally:
        f.close()
    

編集:アンドリューGの文字列形式はより明確です。:)

于 2012-04-09T05:04:49.103 に答える
0

ファイルを(できればwith open('/path/to/file', 'r') as f:構文を使用して)開いてからf.readline()、ループで実行する必要があります。readline()の結果を「username」のような文字列に割り当ててから、ループ内で現在のコードを実行しますresponse = urllib2.urlopen("http://youtube.com/user/%s" % username)

于 2012-04-09T05:04:16.110 に答える