Scrapy Scraper не соскабливает дальше, чем первая страница - PullRequest
0 голосов
/ 21 октября 2018

Я пытаюсь создать паука, который начинается на странице википедии с именем https://en.wikipedia.org/wiki/North_Korea_and_weapons_of_mass_destruction, а затем очищает текстовые и графические файлы, на которые я его подаю.Это похоже на работу, за исключением того, что я получаю только первый ответ (не переходит на следующие страницы. Любая помощь будет принята с благодарностью.

Вот мой код:

import scrapy
from scrapy.spiders import Request
from scrapy.linkextractors import LinkExtractor 
import re

BASE_URL = 'http://en.wikipedia.org'
PROTOCOL = 'https:'


class MissleSpiderBio(scrapy.Spider): 

    name = 'weapons_bio'
    allowed_domains = ['https://en.wikipedia.org']
    start_urls = ['https://en.wikipedia.org/wiki/...'] //url above


    def parse(self, response):
        filename = response.url.split('/')[-1]
        h4s = response.xpath('//h4')

        text = response.css("#mw-content-text > div > p:nth- \
        child(2)::text").extract()
        if text:
            images = response.css("#mw-content-text > div > table> 
            tbody > tr:nth-child(2) > td > a > 
            img::attr(src)").extract()
            yield {'body': text, 'image_urls':[PROTOCOL+ 
            images[0]]}

        else:
            yield {'empty': "not found"}

        for next_page in response.css('#mw-content-text > div > ul 
        > li  > b > a::attr(href)').extract():
            print(BASE_URL + next_page)
            yield response.follow(BASE_URL + next_page, \ 
            callback=self.parse) 

1 Ответ

0 голосов
/ 21 октября 2018

Есть несколько вещей, которые вы можете попробовать

вместо http в

BASE_URL = 'http://en.wikipedia.org'

установить его на

BASE_URL = 'https://en.wikipedia.org'

Вторая вещь, закомментируйте эту строку

allowed_domains = ['https://en.wikipedia.org']

Я думаю, именно поэтому он не переходит по ссылке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...