Я пытаюсь использовать 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. Почему?
Какие различия я нашел ниже:
- Когда я использую домашний Wi-Fi, он может работать нормально
- Когда я переключаюсь на свой телефон точка доступа, он может работать нормально