Có vẻ như những hình ảnh có thể được chiết xuất từ JavaScript mà tìm thấy trong mã nguồn trang web. Tôi đã sử dụng thư viện js2xml để chuyển đổi mã nguồn JavaScript thành XML (bạn có thể tìm hiểu thêm về nó trên số blogpost của Scrapinghub). Sau đó, XML có thể được sử dụng để tạo một Selector
mà bạn có thể trích xuất dữ liệu như bình thường. Hãy xem ví dụ nhện này:
# -*- coding: utf-8 -*-
import js2xml
import scrapy
class ExampleSpider(scrapy.Spider):
name = 'example'
allowed_domains = ['amazon.com']
start_urls = ['https://www.amazon.com/dp/B01N068GIX?psc=1/']
def parse(self, response):
item = dict()
js = response.xpath("//script[contains(text(), 'register(\"ImageBlockATF\"')]/text()").extract_first()
xml = js2xml.parse(js)
selector = scrapy.Selector(root=xml)
item['image_urls'] = selector.xpath('//property[@name="colorImages"]//property[@name="hiRes"]/string/text()').extract()
yield item
Nếu bạn muốn thử nghiệm nó ra, chạy nó như
scrapy runspider example.py -s USER_AGENT="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.52 Safari/537.36"
như Amazon dường như để chặn Scrapy dựa trên người dùng chuỗi đại lý.
Nguồn
2017-10-06 18:06:28
bạn có thể thêm liên kết vào trang và chỉ định yếu tố bạn muốn xác định vị trí không? – CtheSky
Tôi đã thêm liên kết cho trang. – PiccolMan