我试图爬网,但它必须运行 js 才能使页面完全加载。我在中间件中使用了 spynner.Browser,如下所示。问题是我试图抓取的网络需要启用 cookie。
如何将 cookie 传递给 scrapy 中的 spynner.Browser?
scrapy.request -> spynner.Browser() -> scrapy.response
import spynner import pyquery
from scrapy.http import HtmlResponse
class WebkitDownloaderTest( object ):
def process_request( self, request, spider ):
browser = spynner.Browser()
if 'Cookie' in request.headers.keys():
browser.set_cookies(request.headers.Cookie) # is this correct?
browser.create_webview()
browser.set_html_parser(pyquery.PyQuery)
browser.load(request.url, 20)
try:
browser.wait_load(10)
except:
pass
string = browser.html
string=string.encode('utf-8')
renderedBody = str(string)
browser.close()
return HtmlResponse(request.url,
Cookies = browser.cookies, # is this correct?
body=renderedBody )