2012-04-09 4 views
1

여러 줄의 YouTube 사용자 이름이있는 .txt 파일을 가져 와서 YouTube 사용자 홈페이지 URL에 추가하고 크롤링하여 프로필 데이터Python/BeautifulSoup으로 .txt 파일에서 여러 URL 반복하기.

아래 코드는 한 사용자에게 필요한 정보를 제공하지만 여러 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로 추가, 사람들을 반복하고, 모든 정보를 당길 루프를 만드는 방법에 대해 갈 수 있습니까?

답변

1

실제 스크래핑 모듈 (예 : scrapy, mechanize, selenium 등)을 사용하고 싶지 않다면 작성한 내용을 반복해서 반복 할 수 있습니다.

  1. 선으로 몇 가지 파일 개체에 대한 깔끔한 사실을, 라인을 읽을 파일 객체의 반복 사용은 'RB'로 열 경우, 실제로 작성한 Readline을()로 호출하는 것이 그들의 반복기이므로 문서에서 줄 단위로 이동하려면 for line in file_obj을 수행하면됩니다.
  2. 아래 링크 아래에서 +을 사용했지만 연결 기능을 사용할 수도 있습니다. 앤드류 G의 문자열 형식은 명확하다 : 당신이 당신의 요청을 비틀 드릴 것입니다, 그래서 당신은 compassionate screen scraping.

    # 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() 
    

편집 작업을 수행 할 수 있습니다 -

  • 는 URL을의 목록을 확인하십시오. :)

    0

    파일을 열고 (가급적이면 with open('/path/to/file', 'r') as f: 구문으로) 열고 f.readline()을 반복해야합니다. readline()의 결과를 "username"과 같은 문자열에 할당하고 response = urllib2.urlopen("http://youtube.com/user/%s" % username)으로 시작하는 루프 내에서 현재 코드를 실행합니다.

    관련 문제