flickr.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. #!/usr/bin/env python
  2. from urllib import urlencode
  3. from lxml import html
  4. from urlparse import urljoin
  5. categories = ['images']
  6. #https://secure.flickr.com/search?data=1&q=asdf&s=&page=3&mt=&cm=&m=&l=&w=&hd=&d=&append=1
  7. url = 'https://secure.flickr.com/'
  8. search_url = url+'search/?{query}&page={page}'
  9. results_xpath = '//div[@id="thumbnails"]//a[@class="rapidnofollow photo-click" and @data-track="photo-click"]' # noqa
  10. paging = True
  11. def request(query, params):
  12. params['url'] = search_url.format(query=urlencode({'q': query}),
  13. page=params['pageno'])
  14. return params
  15. def response(resp):
  16. global base_url
  17. results = []
  18. dom = html.fromstring(resp.text)
  19. for result in dom.xpath(results_xpath):
  20. href = urljoin(url, result.attrib.get('href'))
  21. img = result.xpath('.//img')[0]
  22. title = img.attrib.get('alt', '')
  23. img_src = img.attrib.get('data-defer-src')
  24. if not img_src:
  25. continue
  26. results.append({'url': href,
  27. 'title': title,
  28. 'img_src': img_src,
  29. 'template': 'images.html'})
  30. return results