| 123456789101112131415161718192021222324252627282930313233343536 | from urllib import urlencodefrom lxml import htmlfrom urlparse import urljoincategories = ['images']base_url = 'https://www.deviantart.com/'search_url = base_url+'search?offset={offset}&{query}'paging = Truedef request(query, params):    offset = (params['pageno'] - 1) * 24    params['url'] = search_url.format(offset=offset,                                      query=urlencode({'q': query}))    return paramsdef response(resp):    global base_url    results = []    if resp.status_code == 302:        return results    dom = html.fromstring(resp.text)    for result in dom.xpath('//div[contains(@class, "tt-a tt-fh")]'):        link = result.xpath('.//a[contains(@class, "thumb")]')[0]        url = urljoin(base_url, link.attrib.get('href'))        title_links = result.xpath('.//span[@class="details"]//a[contains(@class, "t")]')  # noqa        title = ''.join(title_links[0].xpath('.//text()'))        img_src = link.xpath('.//img')[0].attrib['src']        results.append({'url': url,                        'title': title,                        'img_src': img_src,                        'template': 'images.html'})    return results
 |