Когда я использую Scrapy для получения next_url, в ответе отображается правильный URL-адрес, но в теле ответа отображается другой - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь использовать Scrapy для получения next_url, однако я получил другой ответ, чем раньше, что меня смущает. Я поместил свой код ниже:

import scrapy
class Books2Spider(scrapy.Spider):
   name = 'books2'
   start_urls = ['http://books.toscrape.com/']

   def parse(self, response):
    print(response)
    for book in response.css('article.product_pod'):
        name = book.xpath('./h3/a/@title').extract_first()
        price = response.css('p.price_color::text').extract_first()
        yield{
            'name':name,
            'price':price
        }

    next_url = response.css('ul.pager li.next a::attr(href)').extract_first()
    print(next_url)
    print(self.counters)
    if next_url:
        next_url = response.urljoin(next_url)
        yield scrapy.Request(next_url, callback=self.parse)

Когда я запускаю паука на корпоративном Wi-Fi, я мог получить next_url, но ответ казался немного странным. Я поместил его ниже.

response = {HtmlResponse} <200 http://books.toscrape.com/catalogue/page-2.html>
     body = {bytes: 1007} b'<html>\r\n<head>\r\n<script language="javascript">setTimeout("location.replace(location.href.split(\\"#\\")[0])",2000);</script>\r\n<script type="text/javascript" src="http://1.1.1.2:89/cookie/flash.js"></script>\r\n<script language="javascript">setURL("

URL-адрес правильный, но тело, похоже, перенаправлено на 1.1.1.2:89, и нельзя правильно выбрать xpath и css. Почему?

Какие различия я нашел ниже:

  1. Когда я использую домашний Wi-Fi, он может работать нормально
  2. Когда я переключаюсь на свой телефон точка доступа, он может работать нормально
...