| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | """ Stackoverflow (It) @website     https://stackoverflow.com/ @provide-api not clear (https://api.stackexchange.com/docs/advanced-search) @using-api   no @results     HTML @stable      no (HTML can change) @parse       url, title, content"""from urlparse import urljoinfrom cgi import escapefrom urllib import urlencodefrom lxml import htmlfrom searx.engines.xpath import extract_text# engine dependent configcategories = ['it']paging = True# search-urlurl = 'https://stackoverflow.com/'search_url = url+'search?{query}&page={pageno}'# specific xpath variablesresults_xpath = '//div[contains(@class,"question-summary")]'link_xpath = './/div[@class="result-link"]//a|.//div[@class="summary"]//h3//a'content_xpath = './/div[@class="excerpt"]'# do search-requestdef request(query, params):    params['url'] = search_url.format(query=urlencode({'q': query}),                                      pageno=params['pageno'])    return params# get response from search-requestdef response(resp):    results = []    dom = html.fromstring(resp.text)    # parse results    for result in dom.xpath(results_xpath):        link = result.xpath(link_xpath)[0]        href = urljoin(url, link.attrib.get('href'))        title = escape(extract_text(link))        content = escape(extract_text(result.xpath(content_xpath)))        # append result        results.append({'url': href,                        'title': title,                        'content': content})    # return results    return results
 |