一、新建一个分布式爬虫项目,并进入该项目创建爬虫文件
scrapy startproject fenbushi
cd fenbushi
scrapy genspider-t crawl fenbushipc www.xxx.com
二、修改配置文件settings
ROBOTSTXT_OBEY = False
LOG_LEVEL = 'ERROR'
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"
三、编写爬虫文件
1、指定要爬取的网址
start_urls = ["https://699pic.com/soso/-complex---------0--3-.html"]
rules = (Rule(LinkExtractor(allow=r'/soso/-complex---------0--\d+-\.html'), callback="parse_item", follow=True),)
2、获取图片的名称和详情页地址
标题列表=response.xpath('//*[@id="wrapper"]/div[4]/div/div')
for i in 标题列表:
标题=i.xpath('./a/@title').extract_first()
详情页=i.xpath('./a/@href').extract_first()
3、items添加字段
标题 = scrapy.Field()
地址 = scrapy.Field()
4、赋值给items对象
item对象=FenbushiItem()
item对象['标题']=标题
yield scrapy.Request(url=详情页,callback=self.详情页解析,meta={'ietm':item对象})
def 详情页解析(self,response):
item=response.meta['item']
图片地址=response.xpath('//*[@id="wrapper"]/div[2]/div[1]/div/div[1]/div[2]/div[1]/div/a/@href').extract_first()
item['地址']=图片地址
yield item
5、管道文件打印items对象
class FenbushiPipeline:
def process_item(self, item, spider):
print(item)
return item
6、开启管道文件
ITEM_PIPELINES = {
"fenbushi.pipelines.FenbushiPipeline": 300,
}
7、运行效果