Scrapy是一个爬虫框架,它包含engine、scheduler、downloader、spider和pipeline。它们的关系如图所示
Spider就是配置爬虫、解析网页的组件。可以用Selector内置的xpath、css、re来解析页面通过extract()函数返回unicode字符串列表,extract_first()返回unicode字符串。
Pipeline 就是存储数据的组件。在items.py里定义的item,pipeline.py处理返回的item,在settings.py里边激活pipeline。
Downloader Middlewares 处理产生的Request 和 Response,可增加useragent池、添加ip代理等功能
Spider Middlewares处理产生的request、response和item,可以增加cookie处理等功能
Request代表一个http请求,通常在Spider类中产生,然后传递给downloader,返回一个Response对象。
Request构造参数有url、callback、method、meta、body、headers、cookies、encoding、priority、don’t_filter、errback:
url是请求的网址。
callback是处理response的回调函数。
meta可以设置是否允许重定向、是否retry,cookiejar、下载超时、proxy
FormRequest是Request的子类,专门处理HTML表单,在formdata中添加post数据。
Response对象代表http响应,通常是downloader返回,交由Spider处理。
参数有url、headers、status、body、meta、flags