Очистка всех ссылок и связывание контента с Scrapy - PullRequest
0 голосов
/ 29 сентября 2018

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

import scrapy
from urllib.parse import urljoin
from FirstSpider.items import MovieItem

class ProductsSpider(scrapy.Spider):

    name = "movies"
    allowed_domains = ["www.imdb.com"]
    start_urls = ('https://www.imdb.com/chart/top',)

    def parse(self, response):
        products = response.xpath('//body/a/@href').extract()
        for p in products:
            url = urljoin(response.url, p)
            yield scrapy.Request(url, callback=self.parse_movie)

    def parse_movie(self, response):
        item = MovieItem()
        item['title'] = response.xpath('//title/text()').extract() 

    return item

Я понимаю, что, скорее всего, мне не хватает строки кода в методе parse_movie, но я провел весь день в кругах и чувствую себя немного безнадежно.Я прошу прощения за то, что не понял, что, вероятно, легко исправить, так как я новичок в scrapy и python.Спасибо.

1 Ответ

0 голосов
/ 29 сентября 2018

Вы должны использовать //body//a/@href вместо //body/a/@href, чтобы получить все ссылки.Я думаю, что вам нужны только ссылки на фильмы (на странице есть другие ссылки), поэтому измените //body//a/@href на '//body//td[@class="titleColumn"]/a/@href'.

Я сделал скребок IMDB, посмотрите на него, если хотите https://github.com/miguelgarcia/imdb_scraping

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