繁体   English   中英

使用 Scrapy 抓取所有链接和链接内容

[英]Scraping all links and link content with Scrapy

我试图从 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都不熟悉。 谢谢你。

您应该使用//body//a/@href而不是//body/a/@href来获取所有链接。 我认为您只想要电影的链接(页面中还有其他链接),因此将//body//a/@href更改为'//body//td[@class="titleColumn"]/a/@href' .

我做了一个 IMDB爬虫,如果你愿意的话可以看看它https://github.com/miguelgarcia/imdb_scraping

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM