我是scrapy新手,所以请善待我:))
因此,我将使用scrapy从devtools-Network的多个页面中抓取一些JSON文件。但是,每个页面都有不同的标题。我该如何解决这个问题呢?
让我们使用这个
import scrapy
import json
import scrapy
import json
class QuoteSpider(scrapy.Spider):
name = 'quote'
allowed_domains = ['shopee.co.id']
page = 1
start_urls = ['https://shopee.co.id/api/v2/search_items/?by=relevancy&keyword=deodorant&limit=50&newest=0&order=desc&page_type=search&version=2']
def parse(self, response):
data = json.loads(response.text)
for quote in data["quotes"]:
yield {"quote": quote["text"]}
if data["has_next"]:
self.page += 1
url = "https://shopee.co.id/api/v2/search_items/?by=relevancy&keyword=deodorant&limit=50&newest="+str(self.page)+"&order=desc&page_type=search&version=2"
headers = {
'accept' : '*/*'
,'accept-encoding': 'gzip, deflate, br'
,'accept-language': 'en-US,en;q=0.9'
,'if-none-match-' : '55b03-ba4b020f9bad34856fc4771b0aaedc93'
,'referer' : 'https://shopee.co.id/search?keyword=deodorant&page='+str(self.page)
,'sec-fetch-dest' : 'empty'
,'sec-fetch-mode' : 'cors'
,'sec-fetch-site' : 'same-origin'
,'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36'
,'x-api-source' : 'pc'
,'x-requested-with': 'XMLHttpRequest'
}
yield scrapy.Request(url=url, callback=self.parse, method='GET', headers=headers)如何为每个页面添加唯一的标题,例如,
header = {
'referer': 'some_reference_pagenumber',
}我尝试了这个脚本,并试图对其进行修补,但它总是导致shell中的referer:none,因此无法擦除
非常感谢!
发布于 2020-10-16 00:38:19
你不需要在页眉中添加你想要改变的参数。假设您想要根据某些逻辑更改'referer',然后在不使用'referer'的情况下初始化头。
headers = {
'accept' : '*/*'
,'accept-encoding': 'gzip, deflate, br'
,'accept-language': 'en-US,en;q=0.9'
,'if-none-match-' : '55b03-ba4b020f9bad34856fc4771b0aaedc93'
,'sec-fetch-dest' : 'empty'
,'sec-fetch-mode' : 'cors'
,'sec-fetch-site' : 'same-origin'
,'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36'
,'x-api-source' : 'pc'
,'x-requested-with': 'XMLHttpRequest'
}如您所知,headers是一个字典,我们可以根据需要添加它。所以现在我们可以根据我们的逻辑附加它。如下所示:
if 'deoderand' in keyword:
headers['referer'] = f'https://shopee.co.id/search?keyword={keyword}'
yield scrapy.Request(url=url, callback=self.parse, method='GET', headers=headers)每次,当您的逻辑为真时,它都会根据您的需要修改头文件的referer。
https://stackoverflow.com/questions/61400505
复制相似问题