2016-12-24 1 views
1

현재 우분투 서버에 스크립트를 배포하고 제품에 대한 링크를 고치고 있습니다. 이 사이트에서는 User-Agent 및 URL 헤더 관련 항목을 지정해야합니다. 내가 우분투를 사용하고 우분투에 프록시 서버에 연결하고 때, 내 "HDR"변수는이 스크립트에서 무엇을해야 :우분투의 헤더, 사용자 - 에이전트, URL 요청

import urllib2 
from bs4 import BeautifulSoup 
import requests 
from lxml import etree 
import smtplib 
import urllib2, sys 
url = "http://www.sneakersnstuff.com/en/product/22422/adidas-superstar-80s" 
hdr = {'User-Agent': 'Mozilla/5.0'} 
req = urllib2.Request(url,headers=hdr) 
page = urllib2.urlopen(req) 

이 스크립트는하지만 확실하지 내가 뭘 것, 내 컴퓨터의 전원을 오는에 잘 작동합니다 우분투 용 브라우저 또는 사용자 에이전트로 지정하십시오.

코드 :

import urllib2 
from bs4 import BeautifulSoup 
import requests 
from lxml import etree 
import smtplib 
from email.mime.multipart import MIMEMultipart 
from email.mime.text import MIMEText 
import urllib2, sys 
url = "http://www.sneakersnstuff.com/en/product/22422/adidas-superstar-80s" 
hdr = {'User-Agent': 'Mozilla/5.0'} 
req = urllib2.Request(url,headers=hdr) 
page = urllib2.urlopen(req) 

soup = BeautifulSoup(page, "lxml") 
result = soup.find_all("span", {"class":"availability"}) 

는 오류 코드를 반환 urllib2.HTTPError : HTTP 오류 403 : 금지하지만이뿐만 아니라 당신이없는 로컬 컴퓨터

+0

한'파이썬 URLLIB/2.1'' – greybeard

답변

0

떨어져, 우분투에서 발생 스크립트가 실행중인 운영 체제에 따라 다른 User-Agent 문자열을 지정하십시오. 있는 그대로 그대로 둘 수 있습니다.

User-Agent 값을 다시 시작하여 fake-useragent의 실제 사용 도구 목록에서 무작위로 선택하여 시작할 수 있습니다.

+0

내가 위에서 만든 편집을 참조하시기 바랍니다 : 다음 코드를 제공 한 URL에 대한 오류없이 나를 위해 일한 'urllib2.HTTPError : HTTP Error 403 : Forbidden' 오류가 나타납니다. – ColeWorld

+0

@ColeWorld 한 가지 가능성은 IP가 사이트에 의해 이미 금지되었을 수 있다는 것입니다. – alecxe

0

원하는 상담원을 지정할 수 있습니다. 헤더는 프로토콜 HTTP 프로토콜의 일부인 문자열입니다. 서버에서 진행되는 확인 작업이 없습니다. 지정한 헤더가 html 요청을 표시하는 방식을 결정합니다. 즉, 이전 에이전트에는 예상되는 모든 정보가 포함되어 있지 않을 수도 있습니다.

+0

얻기 오류 ...'urllib2.HTTPError : HTTP 오류 403 :'수입 urllib2가 이메일에서 lxml이 수입 etree 수입 smtplib 에서 BS4 가져 오기 BeautifulSoup로 가져 오기 요청 에서 : 코드를 실행할 때 금지 '우분투가 오류를 반환합니다. email.mime.text 수입 MimeText는에서 mime.multipart 수입의 MimeMultipart 수입 urllib2가, SYS URL = "http://www.sneakersnstuff.com/en/product/22422/adidas-superstar-80s" HDR = { ' (url, headers = hdr) page = urllib2.urlopen (req)' – ColeWorld

+0

원래 게시물에서 편집 됨 – ColeWorld

1

전체 urllib2에 대해 확실하지 않지만 문자열을 가져 오려고하는 경우 html 내에서, 당신은 여기에 너무 많은 것들을 가져오고 있습니다. 당신이 제공 한 URL를 들어, 다음 텍스트 긁어 충분 다음 user-agent에 관해서는

from bs4 import BeautifulSoup 
import requests 

, 당신은 사이트 테이너가 당신의 존재에 대해 알고 여부할지 여부 따라, 대부분은 관련이 없습니다 자기 자신을 긁어 모으는 능력에 달려있다. 일부 사이트의 경우 user-agent을 숨기려는 경우가 있습니다. 명시 적으로 명시하려는 것이 좋습니다.

_human_ 될 것이라고 제안하지 않는
from bs4 import BeautifulSoup 
import requests 
url = "http://www.sneakersnstuff.com/en/product/22422/adidas-superstar-80s" 
hdr = {'User-Agent': 'Mozilla/5.0'} 

req = requests.Session() 

page_raw = req.get(url, headers=hdr) 

page_raw.status_code # This was 200 

page_raw.encoding = "utf-8" # Just to be sure 

page_text = page_raw.text 

page_soup = BeautifulSoup(page_text, "lxml") 


page_avaliablity = page_soup.find_all("span", class_="availability") 
관련 문제