scrapy 执行了多个sprider
结构如上图
run函数代码如下:
from scrapy import cmdline
cmdline.execute('scrapy crawl testform'.split())
tesform代码如下:
import scrapy
import requests
import json
class testform(scrapy.Spider):
name = 'testform'
def start_requests(self):
url='https://www.jiqizhixin.com/graphql'
headers={
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Connection': 'keep-alive',
'Content-Length': '320',
'Content-Type': "application/x-www-form-urlencoded",
'Cookie': '_Synced_session=YkdBYVlmcTYyc08zKzROUENpN081czhWblN2TGdBZEVWUGFCQWhHMi9VampHTTBXTEVYbzFOWS8reGxaQ0kxa0x5V1AzaFVPV09ob1FMaTNpdWN1WTg1VjUzN2EyWjRuK09CTGR6NXg1WURMMWtlQTMyZGpNcGtjZkZGOXRrZXdNUFJEVVp5RTVZcFJLNmpjQnAzUC9FRFNnSVJySlN2bDRLUUhxaUxXZ05WdTZPNHZXNVNYcmFIZTdSa21sKzNILS1uajBONjVGaWtvdFcrK3VwRU1oSlZnPT0%3D--f0f9f2de55f2a09c8c29ff407cb0ddcf758c546b; _gat=1; _ga=GA1.2.416194123.1514536384; _gid=GA1.2.218109006.1514536384',
# 'Content-Type': "application/json",
'Host': 'www.jiqizhixin.com',
'Origin': 'https://www.jiqizhixin.com',
'Referer': 'https://www.jiqizhixin.com/categories/zi-xun',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36',
'X-CSRF-Token': 'DfeIz+CdfLWv86lTgKmBu5xDl+hpbIxoE8wmxWIuhzECfwvWfO62+uO2dtqXaKh4nzSM4xRh3/TsTKrEbw73/Q=='
}
payload={
'operationName': 'Search',
'query': "query Search($cursor: String, $count: Int, $keywords: String!, $filter_tags: [String]) {\n elastic_search(first: $count, after: $cursor, keywords: $keywords, filter_tags: $filter_tags) {\n edges {\n node {\n id\n title\n tag_list\n content\n author_name\n categories\n cover_image_url\n published_at\n friendly_path\n __typename\n }\n __typename\n }\n total_count\n pageInfo {\n endCursor\n hasNextPage\n __typename\n }\n __typename\n }\n}\n",
'variables': {'count': 50, 'keywords':'NLP', 'filter_tags': []},
}
req=requests.post(url,json=payload,headers=headers)
# req = requests.post(url, data=json.dumps(payload), headers=headers)
yield scrapy.FormRequest(url,formdata=payload,headers=headers)
def parse(self, response):
print(response)
testlogin里面代码是print(111)一句话
输出结果如下:
可见先执行了testlogin再执行testform,为什么呢?????????????????
这个与scrapy.spiderloader.SpiderLoader类有关,这个类在实例化时会import所有的spider