Utilisez Scrapy pour explorer Himalaya et explorer l'adresse du PC. La réponse du lien d'entrée est correcte, mais la réponse suivante voit l'adresse du mobile. . . .
Le code araignée est le suivant :
class SpxmlySpider(scrapy.Spider):
name = 'ximalaya'
allowed_domains = ["ximalaya.com"]
# 保存每页链接
start_urls = ['http://www.ximalaya.com/dq/all/{}'.format(num) for num in range(2, 3)] #先改为第二页试试
def parse(self, response):
# 取出专辑链接
print(response)
mainurls = response.xpath('//p[@class="albumfaceOutter"]/a/@href').extract()
# for url in mainurls:
# yield Request(url = url, callback=self.parse_details)
print(mainurls[0])
yield Request(url = mainurls[0], dont_filter=True, callback = self.parse_details)
# TODO 为什么PC端访问会变成移动地址问题!!!!!!!!!!!!!!!!!
def parse_details(self, response):
item = XimalayaItem()
print(response)
......以下省略
Sortie console :
Un middlewares.RotateUserAgentMiddleware a été écrit, il est efficace et le contenu de sortie est également visible.
Est-ce que cela déclenche un mécanisme anti-exploration ?
Cela devrait être dû au fait que vos en-têtes n'ont pas de configuration d'agent utilisateur
Configurez soigneusement les en-têtes de requête. Déterminer s'il s'agit d'un terminal mobile repose généralement sur un agent utilisateur
Vous pouvez accéder aux données sans rien, ce qui montre également que le site Web cible ne prête pas beaucoup d'attention à l'anti-hotlinking