2017-09-04 64 views
1

我怎样才能像下面的等价方式设置为用户代办Scrapy与飞溅:更改Scrapy /飞溅用户代理

import requests 
from bs4 import BeautifulSoup 

ua = {"User-Agent":"Mozilla/5.0"} 
url = "http://www.example.com" 
page = requests.get(url, headers=ua) 
soup = BeautifulSoup(page.text, "lxml") 

我的蜘蛛将类似于此:

import scrapy 
from scrapy_splash import SplashRequest 


class ExampleSpider(scrapy.Spider): 
     name = "example" 
     allowed_domains = ["example.com"] 
     start_urls = ["https://www.example.com/"] 

     def start_requests(self): 
      for url in self.start_urls: 
       yield SplashRequest(
        url, 
        self.parse, 
        args={'wait': 0.5} 
       ) 
+0

你尝试SplashRequest的'splash_headers'参数? –

回答

2

你需要设置user_agent属性覆盖默认的用户代理:

class ExampleSpider(scrapy.Spider): 
    name = 'example' 
    user_agent = 'Mozilla/5.0' 

在这种情况下UserAgentMiddleware(即enabled by default)将覆盖USER_AGENT设置值为'Mozilla/5.0'

您还可以覆盖头部每个请求:

scrapy_splash.SplashRequest(url, headers={'User-Agent': custom_user_agent}) 
+0

,但据我了解,Splash不考虑Scrapy设置。 – zinyosrim

+1

@zinyosrim,我刚刚使用httpbin.org/headers URL进行了检查,'user_agent'肯定会影响httpbin响应中的'User-Agent'值。 – skovorodkin