爬取数据并解析
def parse(self, response): # 解析,请求回来,自动执行parser,在这个方法中做解析 # 解析 方式一:使用bs4解析 # from bs4 import BeautifulSoup # soup=BeautifulSoup(response.text,'lxml') # soup.find_all() # 方式二:使用内置的css解析器 # css与xpath解析后的数据都放在列表中 # 取第一个:extract_first() # 取出所有的extract() # css选择器取文本和属性: # .link-title::text # .link-title::attr(href) div_list = response.css('div.link-item') for div in div_list: title = div.css('.link-title::text').extract_first() url = div.css('.link-title::attr(href)').extract_first() if 'http' not in url: url = 'https://dig.chouti.com/'+url img_url = div.css('.image-scale::attr(src)').extract_first() if not img_url: img_url = div.css('.image-item::attr(src)').extract_first() print(''' 新闻标题:%s 新闻连接:%s 新闻图片:%s ''' % (title, url, img_url)) # 方式三:使用内置的xpath解析 # css与xpath解析后的数据都放在列表中 # 取第一个:extract_first() # 取出所有的extract() # xpath选择器取文本和属性: # /text() # /@属性名 div_list = response.xpath('//div[contains(@class,"link-item")]') for div in div_list: title = div.xpath('.//a[contains(@class,"link-title")]/text()').extract_first() url = div.xpath('.//a[contains(@class,"link-title")]/@href').extract_first() # if 'http' not in url: # url = 'https://dig.chouti.com/' + url img_url = div.xpath('.//*[contains(@class,"image-scale")]/@src').extract_first() # if not img_url: # img_url = div.xpath('.//*[contains(@class,"image-item")]/@src').extract_first() print(''' 新闻标题:%s 新闻连接:%s 新闻图片:%s ''' % (title, url, img_url))