我对Scrapy,Python和面向对象编程比较陌生,所以如果我的术语不正确或者不清楚,我会道歉.
我正在尝试编写一个蜘蛛,当它从响应中抓取项目时,也会创建一个修改版本的响应以保存到文件.例如,我正在尝试更改'src'链接以指向本地保存的已删除文件.
目前,我正在使用Scrapy的选择器抓取数据并使用lxml修改响应.但是,我想使用Scrapy的方法来代替lxml进行修改,因为使用Scrapy选择器和lxml意味着基本上将代码加倍以在响应中定位相同的元素.
我在下面添加了一些代码来说明我的观点.一切都发生在蜘蛛解析功能中.
def解析(自我,回应):
# Scrape thumbnail URLs using Scrapy selectors
for post in response.css('.post'): # For each post
for thumb in post.css('.thumb'): # For each thumbnail
item = Item() # Create an image item
item['thumbnail_url'] = []
item['thumbnail_savepath'] = []
for x in thumb.xpath('img/@src').extract():
thumbnail_url = 'https:' + x
thumbnail_filename = re.search('.*/(.*)', thumbnail_url).group(1)
thumbnail_savepath = 'thumbnails/' + thumbnail_filename
item['thumbnail_url'] += [thumbnail_url]
item['thumbnail_savepath'] += [thumbnail_savepath]
# Make modified html using lxml
body_lxml = lxml.html.document_fromstring(response.body)
for thumbnail in body_lxml.xpath('//img'):
thumbnail_src …Run Code Online (Sandbox Code Playgroud)