2016-11-16 4 views
2

여러 URL에서 특정 클래스를 추출하려고합니다. 태그와 클래스는 동일하게 유지되지만 필자가 링크를 입력 할 때 파이썬 프로그램을 모두 사용해야합니다.아름다운 스프를 사용하여 여러 URL 긁기

from bs4 import BeautifulSoup 
import requests 
import pprint 
import re 
import pyperclip 

url = input('insert URL here: ') 
#scrape elements 
response = requests.get(url) 
soup = BeautifulSoup(response.content, "html.parser") 

#print titles only 
h1 = soup.find("h1", class_= "class-headline") 
print(h1.get_text()) 

이 개별 URL 작동하지만 배치에 대한 :

여기에 내 작품의 샘플입니다. 도와 주셔서 감사합니다. 나는이 공동체에서 많은 것을 배웠다.

답변

2

URL 목록을 가지고 그것을 반복합니다. 당신은 일괄 링크를 긁어하려면

from bs4 import BeautifulSoup 
import requests 
import pprint 
import re 
import pyperclip 

urls = ['www.website1.com', 'www.website2.com', 'www.website3.com', .....] 
#scrape elements 
for url in urls: 
    response = requests.get(url) 
    soup = BeautifulSoup(response.content, "html.parser") 

    #print titles only 
    h1 = soup.find("h1", class_= "class-headline") 
    print(h1.get_text()) 

당신은 그것을 할 수있는 각 사이트에 대해 입력하라는 메시지를 표시하려면이 방법

from bs4 import BeautifulSoup 
import requests 
import pprint 
import re 
import pyperclip 

urls = ['www.website1.com', 'www.website2.com', 'www.website3.com', .....] 
#scrape elements 
msg = 'Enter Url, to exit type q and hit enter.' 
url = input(msg) 
while(url!='q'): 
    response = requests.get(url) 
    soup = BeautifulSoup(response.content, "html.parser") 

    #print titles only 
    h1 = soup.find("h1", class_= "class-headline") 
    print(h1.get_text()) 
    input(msg) 
+0

내가이 오류를 얻을 파일 "/Users/Computer/Desktop/test.py", 7 호선, 하는 URL을 = 입력 [ '은 https : //website.com/link1','https://website.com/link2 '] TypeError :'builtin_function_or_method '객체는 subscriptable이 아닙니다. –

+0

사용자로부터 각 URL의 입력을 받습니까? 그렇다면 단순히 내 URL에 표시 한대로 모든 URL을 입력하십시오. 입력 방법에 목록을 넣지 마십시오. – falloutcoder

+0

사용자의 입력을 줄 단위로 구분하려고 생각 했습니까? –

1

을하려는 경우. 배치 크기를 지정하고 반복하십시오. 역 추적 (마지막으로 가장 최근 통화) :

from bs4 import BeautifulSoup 
import requests 
import pprint 
import re 
import pyperclip 

batch_size = 5 
urllist = ["url1", "url2", "url3", .....] 
url_chunks = [urllist[x:x+batch_size] for x in xrange(0, len(urllist), batch_size)] 

def scrape_url(url): 
    response = requests.get(url) 
    soup = BeautifulSoup(response.content, "html.parser") 
    h1 = soup.find("h1", class_= "class-headline") 
    return (h1.get_text()) 

def scrape_batch(url_chunk): 
    chunk_resp = [] 
    for url in url_chunk: 
     chunk_resp.append(scrape_url(url)) 
    return chunk_resp 

for url_chunk in url_chunks: 
    print scrape_batch(url_chunk) 
+0

10 개 간격으로 요청을 각 URL에 공백으로 표시하려면 어떻게해야합니까? 그리고 나는 URL 덩어리에 익숙하지 않다, 그들의 목적은 무엇인가? – ColeWorld

+0

요청 간격을 늘리려면 scrape_url 함수에서 time.sleep (10)을 사용하십시오. url_chunks는 url 목록을 포함하는 python 목록 인 변수입니다. 예 : [[ 'www.website1.com', 'www.website2.com'], [ 'www.website3.com', 'www.website3.com']] –

관련 문제