更改Scrapy /飞溅用户代理
我怎样才能像下面的等价方式设置为用户代办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}
)
你需要设置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})
,但据我了解,Splash不考虑Scrapy设置。 – zinyosrim
@zinyosrim,我刚刚使用httpbin.org/headers URL进行了检查,'user_agent'肯定会影响httpbin响应中的'User-Agent'值。 – skovorodkin
正确的方法是改变飞溅脚本,包括它......没有将它添加到蜘蛛虽然哎..如果它的工作原理,以及在... .. yahh
http://splash.readthedocs.io/en/stable/scripting-ref.html?highlight=agent
你尝试SplashRequest的'splash_headers'参数? –