这可能是一个超级菜鸟问题...请原谅我.... 我读到有人构造了这样的HtmlResponse类:
response = HtmlResponse(url = 'http://asite.com', body=html, encoding='utf-8')
body = html是做什么的?是否指定源html?为什么即使指定了URL也需要源HTML?
答案 0 :(得分:1)
要为您的问题提供背景信息,您需要了解Scrapy并不是发出直接请求的工具。 Scrapy是web-crawling framework,可作为项目独立工作。
我假设您认为response = HtmlResponse(url = 'http://asite.com', ...)
是从该特定站点“下载”信息的一种方式,但这不是事实。 Scrapy旨在以指定的here特定方式和特定顺序工作。请求和响应并不能在Scrapy中单独使用,因为它有自己的调度程序,您可以在其中转储Request
个对象,然后取回Response
个对象。
Response
对象不是要直接实例化的(实际上,我一生中从未实例化单个Response
),因为它们是由Scrapy调度程序创建的,先前指定的Request
。
话虽如此,您当然仍然可以像在Python中使用其他Response
一样实例化class
,实际上,它很有用,但主要用于testing purposes,但仅此而已,这只是应该从Scrapy调度程序获得的内容的“无用”表示。
答案 1 :(得分:0)
参数 body :要以str(在Python 2中为unicode)访问已解码的文本,可以从可识别编码的Response子类(例如from tkinter import *
from itertools import cycle
from glob import glob
from random import shuffle
class MyTkinterFrame(Frame):
def __init__(self, master, image_files):
self.master = master
self.x_center = int(self.master.winfo_screenwidth()*.5)
self.y_center = int(self.master.winfo_screenheight()*.5)
self.bg = Canvas(self.master)
self.bg.pack(fill=BOTH, expand=YES)
self.make_gif()
self.make_picture(image_files)
self.updatepicture()
self.updategif()
def make_gif(self):
imagelist = glob('Images/My Tkinter Background/*.gif', recursive=True)
self.giflist = [(PhotoImage(file=image))
for image in imagelist]
self.gifcycle = cycle(self.giflist)
self.bg_image=next(self.gifcycle)
self.bg.gif_create = self.bg.create_image(self.x_center, self.y_center, image=self.bg_image)
def make_picture(self,image_files):
self.image_files = cycle(image_files)
self.slides = PhotoImage(file=next(self.image_files))
self.img_object = self.slides
self.bg.fg = self.bg.create_image(self.x_center, self.y_center, image=self.img_object)
def updatepicture(self): #this function loops to update foreground image
self.img_object = self.slides
self.bg.itemconfig(self.bg.fg, image=self.img_object)
self.slides = PhotoImage(file=next(self.image_files))
#for more pronounced error effect, lower delay(500) to 100
self.master.after(500, self.updatepicture)
def updategif(self): #this function loops to update background image
self.bg_image=next(self.gifcycle)
self.bg.itemconfig(self.bg.gif_create, image = self.bg_image)
self.master.after(25, self.updategif)
if __name__ == '__main__':
#this bit makes it pretty and easier to diagnose
root = Tk()
width = root.winfo_screenwidth()
height = root.winfo_screenheight()
root.geometry('%dx%d' % (width, height))
root.configure(background="#000000")
#end
#find foreground images
image_files = glob('Images/My Tkinter Foreground/*.png', recursive=True)
shuffle(image_files)
e = MyTkinterFrame(root, image_files)
root.mainloop()
)中使用response.text
。
有关更多信息:Request-Response
答案 2 :(得分:0)
因为HTMLResponse不会下载与给定的url
关联的页面。 HTMLResponse
用于解析html(以xpath和CSS查询)。页面下载在另一段代码中进行。此外,通过与url
对象关联的HtmlResponse
,您可以轻松访问该属性。
您可以检查: