[英]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.